79 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Go
		
	
	
	
package options
 | 
						||
 | 
						||
import (
 | 
						||
	"github.com/oauth2-proxy/oauth2-proxy/v7/pkg/logger"
 | 
						||
	"github.com/spf13/pflag"
 | 
						||
)
 | 
						||
 | 
						||
// Logging contains all options required for configuring the logging
 | 
						||
type Logging struct {
 | 
						||
	AuthEnabled     bool           `flag:"auth-logging" cfg:"auth_logging"`
 | 
						||
	AuthFormat      string         `flag:"auth-logging-format" cfg:"auth_logging_format"`
 | 
						||
	RequestEnabled  bool           `flag:"request-logging" cfg:"request_logging"`
 | 
						||
	RequestFormat   string         `flag:"request-logging-format" cfg:"request_logging_format"`
 | 
						||
	StandardEnabled bool           `flag:"standard-logging" cfg:"standard_logging"`
 | 
						||
	StandardFormat  string         `flag:"standard-logging-format" cfg:"standard_logging_format"`
 | 
						||
	ErrToInfo       bool           `flag:"errors-to-info-log" cfg:"errors_to_info_log"`
 | 
						||
	ExcludePaths    []string       `flag:"exclude-logging-path" cfg:"exclude_logging_paths"`
 | 
						||
	LocalTime       bool           `flag:"logging-local-time" cfg:"logging_local_time"`
 | 
						||
	SilencePing     bool           `flag:"silence-ping-logging" cfg:"silence_ping_logging"`
 | 
						||
	File            LogFileOptions `cfg:",squash"`
 | 
						||
}
 | 
						||
 | 
						||
// LogFileOptions contains options for configuring logging to a file
 | 
						||
type LogFileOptions struct {
 | 
						||
	Filename   string `flag:"logging-filename" cfg:"logging_filename"`
 | 
						||
	MaxSize    int    `flag:"logging-max-size" cfg:"logging_max_size"`
 | 
						||
	MaxAge     int    `flag:"logging-max-age" cfg:"logging_max_age"`
 | 
						||
	MaxBackups int    `flag:"logging-max-backups" cfg:"logging_max_backups"`
 | 
						||
	Compress   bool   `flag:"logging-compress" cfg:"logging_compress"`
 | 
						||
}
 | 
						||
 | 
						||
func loggingFlagSet() *pflag.FlagSet {
 | 
						||
	flagSet := pflag.NewFlagSet("logging", pflag.ExitOnError)
 | 
						||
 | 
						||
	flagSet.Bool("auth-logging", true, "Log authentication attempts")
 | 
						||
	flagSet.String("auth-logging-format", logger.DefaultAuthLoggingFormat, "Template for authentication log lines")
 | 
						||
	flagSet.Bool("sensible-logging", false, "Log sensible data")
 | 
						||
	flagSet.Bool("standard-logging", true, "Log standard runtime information")
 | 
						||
	flagSet.String("standard-logging-format", logger.DefaultStandardLoggingFormat, "Template for standard log lines")
 | 
						||
	flagSet.Bool("request-logging", true, "Log HTTP requests")
 | 
						||
	flagSet.String("request-logging-format", logger.DefaultRequestLoggingFormat, "Template for HTTP request log lines")
 | 
						||
	flagSet.Bool("errors-to-info-log", false, "Log errors to the standard logging channel instead of stderr")
 | 
						||
 | 
						||
	flagSet.StringSlice("exclude-logging-path", []string{}, "Exclude logging requests to paths (eg: '/path1,/path2,/path3')")
 | 
						||
	flagSet.Bool("logging-local-time", true, "If the time in log files and backup filenames are local or UTC time")
 | 
						||
	flagSet.Bool("silence-ping-logging", false, "Disable logging of requests to ping endpoint")
 | 
						||
 | 
						||
	flagSet.String("logging-filename", "", "File to log requests to, empty for stdout")
 | 
						||
	flagSet.Int("logging-max-size", 100, "Maximum size in megabytes of the log file before rotation")
 | 
						||
	flagSet.Int("logging-max-age", 7, "Maximum number of days to retain old log files")
 | 
						||
	flagSet.Int("logging-max-backups", 0, "Maximum number of old log files to retain; 0 to disable")
 | 
						||
	flagSet.Bool("logging-compress", false, "Should rotated log files be compressed using gzip")
 | 
						||
 | 
						||
	return flagSet
 | 
						||
}
 | 
						||
 | 
						||
// loggingDefaults creates a Logging structure, populating each field with its default value
 | 
						||
func loggingDefaults() Logging {
 | 
						||
	return Logging{
 | 
						||
		ExcludePaths:    nil,
 | 
						||
		LocalTime:       true,
 | 
						||
		SilencePing:     false,
 | 
						||
		AuthEnabled:     true,
 | 
						||
		AuthFormat:      logger.DefaultAuthLoggingFormat,
 | 
						||
		RequestEnabled:  true,
 | 
						||
		RequestFormat:   logger.DefaultRequestLoggingFormat,
 | 
						||
		StandardEnabled: true,
 | 
						||
		StandardFormat:  logger.DefaultStandardLoggingFormat,
 | 
						||
		ErrToInfo:       false,
 | 
						||
		File: LogFileOptions{
 | 
						||
			Filename:   "",
 | 
						||
			MaxSize:    100,
 | 
						||
			MaxAge:     7,
 | 
						||
			MaxBackups: 0,
 | 
						||
			Compress:   false,
 | 
						||
		},
 | 
						||
	}
 | 
						||
}
 |