Skip to content

Commit

Permalink
internal/logger: export Logger structure
Browse files Browse the repository at this point in the history
The Logger structure was not exported, preventing some code completion
systems to work properly. This patch exports it, but let the internal
information private.

Signed-off-by: Bruno Meneguele <bmeneg@redhat.com>
  • Loading branch information
bmeneg committed Jun 22, 2021
1 parent 3d58004 commit 0edf42e
Showing 1 changed file with 25 additions and 25 deletions.
50 changes: 25 additions & 25 deletions internal/logger/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ const (
LOG_DEBUG
)

// This internal logger will have a different log.Logger for each level,
// allowing different destination (file or fd) in different levels and
// also different prefixes.
type logger struct {
// Logger represents lab's internal logger structure, which has a different
// log.Logger for each level, allowing different destination (file or fd) in
// different levels and also different prefixes.
type Logger struct {
level int
errorLogger *log.Logger
warnLogger *log.Logger
Expand All @@ -31,15 +31,15 @@ type logger struct {
}

// Internal instance that is used by anyone getting it through GetInstance()
var internalLogger *logger
var internalLogger *Logger

// A way to avoid multiple initialization of the same logger
var once sync.Once

// GetInstance returns the default lab internal logger
func GetInstance() *logger {
func GetInstance() *Logger {
once.Do(func() {
internalLogger = &logger{
internalLogger = &Logger{
// Set INFO as default level. The user can change it
level: LOG_INFO,
// Setting Lmsgprefix preffix make the prefix to be printed before
Expand All @@ -55,7 +55,7 @@ func GetInstance() *logger {

// SetLogLevel set the level of the internal logger.
// Allowed values are LOG_{ERROR,INFO,DEBUG,NONE}.
func (l *logger) SetLogLevel(level int) error {
func (l *Logger) SetLogLevel(level int) error {
if !(level >= LOG_NONE && level <= LOG_DEBUG) {
return errors.New("invalid log level")
}
Expand All @@ -64,13 +64,13 @@ func (l *logger) SetLogLevel(level int) error {
}

// LogLevel return de current log level of the internal logger
func (l *logger) LogLevel() int {
func (l *Logger) LogLevel() int {
return l.level
}

// SetStdDest sets what's the desired stdout and stderr for the internal
// log. It can be any io.Writer value.
func (l *logger) SetStdDest(stdout io.Writer, stderr io.Writer) {
func (l *Logger) SetStdDest(stdout io.Writer, stderr io.Writer) {
l.errorLogger.SetOutput(stderr)
l.warnLogger.SetOutput(stdout)
l.infoLogger.SetOutput(stdout)
Expand Down Expand Up @@ -115,19 +115,19 @@ func addFileLinePrefix(msg string) string {
}

// Fatal prints the values and exit the program with os.Exit()
func (l *logger) Fatal(values ...interface{}) {
func (l *Logger) Fatal(values ...interface{}) {
values = append([]interface{}{addFileLinePrefix(" ")}, values...)
l.errorLogger.Fatal(values...)
}

// Fatal prints formated strings and exit the program with os.Exit()
func (l *logger) Fatalf(format string, values ...interface{}) {
func (l *Logger) Fatalf(format string, values ...interface{}) {
values = append([]interface{}{addFileLinePrefix("")}, values...)
l.errorLogger.Fatalf("%s "+format, values...)
}

// Fatal prints the values in a new line and exit the program with os.Exit()
func (l *logger) Fatalln(values ...interface{}) {
func (l *Logger) Fatalln(values ...interface{}) {
values = append([]interface{}{addFileLinePrefix(" ")}, values...)
l.errorLogger.Fatalln(values...)
}
Expand All @@ -136,7 +136,7 @@ func (l *logger) Fatalln(values ...interface{}) {
// These parameters match the retryablehttp.LeveledLogger, which we want to
// satisfy for silencing their debug messages being printed in the stdout.
// Error message are always printed, regardless the log level.
func (l *logger) Error(msg string, keysAndValues ...interface{}) {
func (l *Logger) Error(msg string, keysAndValues ...interface{}) {
if l.level >= LOG_ERROR {
l.errorLogger.Print(addFileLinePrefix(msg))
printKeysAndValues(l.errorLogger, keysAndValues...)
Expand All @@ -145,7 +145,7 @@ func (l *logger) Error(msg string, keysAndValues ...interface{}) {

// Errorf prints formated error message (prefixed with "ERROR:").
// Error message are always printed, regardless the log level.
func (l *logger) Errorf(format string, values ...interface{}) {
func (l *Logger) Errorf(format string, values ...interface{}) {
if l.level >= LOG_ERROR {
values = append([]interface{}{addFileLinePrefix("")}, values...)
l.errorLogger.Printf("%s "+format, values...)
Expand All @@ -154,7 +154,7 @@ func (l *logger) Errorf(format string, values ...interface{}) {

// Errorln prints error values in a new line (prefixed with "ERROR:").
// Error message are always printed, regardless the log level.
func (l *logger) Errorln(values ...interface{}) {
func (l *Logger) Errorln(values ...interface{}) {
if l.level >= LOG_ERROR {
values = append([]interface{}{addFileLinePrefix("")}, values...)
l.errorLogger.Println(values...)
Expand All @@ -165,7 +165,7 @@ func (l *logger) Errorln(values ...interface{}) {
// These parameters match the retryablehttp.LeveledLogger, which we want to
// satisfy for silencing their debug messages being printed in the stdout.
// Warning messages require at least LOG_INFO level.
func (l *logger) Warn(msg string, keysAndValues ...interface{}) {
func (l *Logger) Warn(msg string, keysAndValues ...interface{}) {
if l.level >= LOG_INFO {
l.warnLogger.Print(addFileLinePrefix(msg))
printKeysAndValues(l.warnLogger, keysAndValues...)
Expand All @@ -174,7 +174,7 @@ func (l *logger) Warn(msg string, keysAndValues ...interface{}) {

// Warnf prints formated warning message (prefixed with "WARNING:").
// Warning messages require at least LOG_INFO level.
func (l *logger) Warnf(format string, values ...interface{}) {
func (l *Logger) Warnf(format string, values ...interface{}) {
if l.level >= LOG_INFO {
values = append([]interface{}{addFileLinePrefix("")}, values...)
l.warnLogger.Printf("%s "+format, values...)
Expand All @@ -183,7 +183,7 @@ func (l *logger) Warnf(format string, values ...interface{}) {

// Warnln prints warning values in a new line (prefixed with "WARNING:").
// Warning messages require at least LOG_INFO level.
func (l *logger) Warnln(values ...interface{}) {
func (l *Logger) Warnln(values ...interface{}) {
if l.level >= LOG_INFO {
values = append([]interface{}{addFileLinePrefix("")}, values...)
l.warnLogger.Println(values...)
Expand All @@ -194,7 +194,7 @@ func (l *logger) Warnln(values ...interface{}) {
// These parameters match the retryablehttp.LeveledLogger, which we want to
// satisfy for silencing their debug messages being printed in the stdout.
// Info messages require at least LOG_INFO level.
func (l *logger) Info(msg string, keysAndValues ...interface{}) {
func (l *Logger) Info(msg string, keysAndValues ...interface{}) {
if l.level >= LOG_INFO {
l.infoLogger.Print(addFileLinePrefix(msg))
printKeysAndValues(l.infoLogger, keysAndValues...)
Expand All @@ -203,7 +203,7 @@ func (l *logger) Info(msg string, keysAndValues ...interface{}) {

// Infof prints formated informational message (prefixed with "INFO:").
// Info messages require at least LOG_INFO level.
func (l *logger) Infof(format string, values ...interface{}) {
func (l *Logger) Infof(format string, values ...interface{}) {
if l.level >= LOG_INFO {
values = append([]interface{}{addFileLinePrefix("")}, values...)
l.infoLogger.Printf("%s "+format, values...)
Expand All @@ -212,7 +212,7 @@ func (l *logger) Infof(format string, values ...interface{}) {

// Infoln prints info values in a new line (prefixed with "INFO:").
// Info messages require at least LOG_INFO level.
func (l *logger) Infoln(values ...interface{}) {
func (l *Logger) Infoln(values ...interface{}) {
if l.level >= LOG_INFO {
values = append([]interface{}{addFileLinePrefix("")}, values...)
l.infoLogger.Println(values...)
Expand All @@ -223,7 +223,7 @@ func (l *logger) Infoln(values ...interface{}) {
// These parameters match the retryablehttp.LeveledLogger, which we want to
// satisfy for silencing thier debug messages being printed in the stdout.
// Debug messages require at least LOG_DEBUG level.
func (l *logger) Debug(msg string, keysAndValues ...interface{}) {
func (l *Logger) Debug(msg string, keysAndValues ...interface{}) {
if l.level >= LOG_DEBUG {
l.debugLogger.Print(addFileLinePrefix(msg))
printKeysAndValues(l.debugLogger, keysAndValues...)
Expand All @@ -232,7 +232,7 @@ func (l *logger) Debug(msg string, keysAndValues ...interface{}) {

// Debugf prints formated debug message (prefixed with "DEBUG:").
// Debug messages require at least LOG_DEBUG level.
func (l *logger) Debugf(format string, values ...interface{}) {
func (l *Logger) Debugf(format string, values ...interface{}) {
if l.level >= LOG_DEBUG {
values = append([]interface{}{addFileLinePrefix("")}, values...)
l.debugLogger.Printf("%s "+format, values...)
Expand All @@ -241,7 +241,7 @@ func (l *logger) Debugf(format string, values ...interface{}) {

// Debugln prints debug values in a new line (prefixed with "DEBUG:").
// Debug messages require at least LOG_DEBUG level.
func (l *logger) Debugln(values ...interface{}) {
func (l *Logger) Debugln(values ...interface{}) {
if l.level >= LOG_DEBUG {
values = append([]interface{}{addFileLinePrefix("")}, values...)
l.debugLogger.Println(values...)
Expand Down

0 comments on commit 0edf42e

Please sign in to comment.