Help us shape the future of Go! Take the 2026 Go Developer Survey

audit

package
v0.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 28, 2025 License: AGPL-3.0 Imports: 7 Imported by: 0

Documentation

Overview

internal/audit/logger.go

Index

Constants

View Source
const (
	// Default audit retention period in days
	DefaultAuditRetentionDays = 7
	// Default audit statistics timeout in seconds
	DefaultAuditStatsTimeout = 5
	// Percentage multiplier for success rate calculation
	PercentageMultiplier = 100
)

Variables

View Source
var (
	// ErrAuditShutdownTimeout is returned when audit logger shutdown times out.
	ErrAuditShutdownTimeout = errors.New("audit logger shutdown timeout")
)

Functions

This section is empty.

Types

type AuditEntry

type AuditEntry struct {
	ID        string                 `json:"id"`
	Timestamp time.Time              `json:"timestamp"`
	Event     string                 `json:"event"`
	UserID    string                 `json:"user_id,omitempty"`
	ClientID  string                 `json:"client_id,omitempty"`
	IP        string                 `json:"ip_address,omitempty"`
	UserAgent string                 `json:"user_agent,omitempty"`
	Details   map[string]interface{} `json:"details,omitempty"`
	Success   bool                   `json:"success"`
	Error     string                 `json:"error,omitempty"`
}

type AuditFilter

type AuditFilter struct {
	Event     string    `json:"event,omitempty"`
	UserID    string    `json:"user_id,omitempty"`
	ClientID  string    `json:"client_id,omitempty"`
	Success   *bool     `json:"success,omitempty"`
	StartTime time.Time `json:"start_time,omitempty"`
	EndTime   time.Time `json:"end_time,omitempty"`
}

type AuditLogger

type AuditLogger struct {
	// contains filtered or unexported fields
}

func NewAuditLogger

func NewAuditLogger(auditConfig *config.AuditConfig, logger *logging.Logger) *AuditLogger

func (*AuditLogger) GetEntries

func (al *AuditLogger) GetEntries(limit int, offset int, filter *AuditFilter) ([]AuditEntry, int, error)

func (*AuditLogger) GetStats

func (al *AuditLogger) GetStats() AuditStats

func (*AuditLogger) Log

func (al *AuditLogger) Log(event, userID, clientID, ip, userAgent string, success bool, details map[string]interface{}, err error)

func (*AuditLogger) LogOAuthTokenIssued

func (al *AuditLogger) LogOAuthTokenIssued(userID, clientID, ip, userAgent string, tokenType string, success bool, err error)

Helper methods for common audit events

func (*AuditLogger) LogOAuthTokenRevoked

func (al *AuditLogger) LogOAuthTokenRevoked(userID, clientID, ip, userAgent string, tokenType string, success bool, err error)

func (*AuditLogger) LogServerAccess

func (al *AuditLogger) LogServerAccess(userID, clientID, ip, userAgent string, serverName, scope string, success bool, err error)

func (*AuditLogger) LogUserLogin

func (al *AuditLogger) LogUserLogin(userID, ip, userAgent string, success bool, err error)

func (*AuditLogger) Shutdown

func (al *AuditLogger) Shutdown() error

Shutdown gracefully stops the audit logger

type AuditStats

type AuditStats struct {
	TotalEntries int            `json:"total_entries"`
	EventCounts  map[string]int `json:"event_counts"`
	SuccessRate  float64        `json:"success_rate"`
}

type Entry

type Entry struct {
	ID        string                 `json:"id"`
	Timestamp time.Time              `json:"timestamp"`
	Event     string                 `json:"event"`
	UserID    string                 `json:"user_id,omitempty"`
	ClientID  string                 `json:"client_id,omitempty"`
	IP        string                 `json:"ip_address,omitempty"`
	UserAgent string                 `json:"user_agent,omitempty"`
	Details   map[string]interface{} `json:"details,omitempty"`
	Success   bool                   `json:"success"`
	Error     string                 `json:"error,omitempty"`
}

type Logger

type Logger struct {
	// contains filtered or unexported fields
}

func NewLogger

func NewLogger(maxEntries int, maxAge string, events []string, logger *logging.Logger) *Logger

func (*Logger) GetEntries

func (l *Logger) GetEntries(limit, offset int) ([]Entry, int)

func (*Logger) Log

func (l *Logger) Log(event string, userID, clientID, ip, userAgent string, success bool, details map[string]interface{}, err error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL