oauth2-proxy/oauth2-proxy

View on GitHub
pkg/validation/logging.go

Summary

Maintainability
A
0 mins
Test Coverage
F
38%
package validation

import (
    "os"

    "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/options"
    "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/logger"
    "gopkg.in/natefinch/lumberjack.v2"
)

// configureLogger is responsible for configuring the logger based on the options given
func configureLogger(o options.Logging, msgs []string) []string {
    // Setup the log file
    if len(o.File.Filename) > 0 {
        // Validate that the file/dir can be written
        file, err := os.OpenFile(o.File.Filename, os.O_WRONLY|os.O_CREATE, 0600)
        if err != nil {
            if os.IsPermission(err) {
                return append(msgs, "unable to write to log file: "+o.File.Filename)
            }
        }
        err = file.Close()
        if err != nil {
            return append(msgs, "error closing the log file: "+o.File.Filename)
        }

        logger.Printf("Redirecting logging to file: %s", o.File.Filename)

        logWriter := &lumberjack.Logger{
            Filename:   o.File.Filename,
            MaxSize:    o.File.MaxSize, // megabytes
            MaxAge:     o.File.MaxAge,  // days
            MaxBackups: o.File.MaxBackups,
            LocalTime:  o.LocalTime,
            Compress:   o.File.Compress,
        }

        logger.SetOutput(logWriter)
    }

    // Supply a sanity warning to the logger if all logging is disabled
    if !o.StandardEnabled && !o.AuthEnabled && !o.RequestEnabled {
        logger.Error("Warning: Logging disabled. No further logs will be shown.")
    }

    // Pass configuration values to the standard logger
    logger.SetStandardEnabled(o.StandardEnabled)
    logger.SetErrToInfo(o.ErrToInfo)
    logger.SetAuthEnabled(o.AuthEnabled)
    logger.SetReqEnabled(o.RequestEnabled)
    logger.SetStandardTemplate(o.StandardFormat)
    logger.SetAuthTemplate(o.AuthFormat)
    logger.SetReqTemplate(o.RequestFormat)

    logger.SetExcludePaths(o.ExcludePaths)

    if !o.LocalTime {
        logger.SetFlags(logger.Flags() | logger.LUTC)
    }

    return msgs
}