Skip to content

Commit

Permalink
removing bload
Browse files Browse the repository at this point in the history
  • Loading branch information
ricardorg79 committed Jul 2, 2018
1 parent 2e41c73 commit 9589249
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 144 deletions.
8 changes: 8 additions & 0 deletions debug/main.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
package main

import (
"os"
"time"

"github.com/libgolang/log"
)

func main() {
/*
w := &log.WriterStdout{}
w.SetLevel(log.DEBUG)
log.SetWriters([]log.Writer{w})
*/
os.Setenv("LOG_CONFIG", "./config.properties")

log.Debug("Debug")
log.Info("Info")
log.Warn("Warn")
Expand Down
8 changes: 3 additions & 5 deletions file_writer.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,23 +64,21 @@ func NewFileWriter(logDir, fileName string, maxSize FileSize, maxNumFiles int, l
}

type writeLogMsg struct {
name string
mLevel Level
format string
args []interface{}
}

// WriteLog implementation of logger.Writer
func (fw *fileWriter) WriteLog(
name string,
mLevel Level,
format string,
args []interface{},
) {
if fw.level < mLevel {
return
}
fw.logQueue <- &writeLogMsg{name, mLevel, format, args}
fw.logQueue <- &writeLogMsg{mLevel, format, args}
}

func (fw *fileWriter) SetLevel(level Level) {
Expand All @@ -92,9 +90,9 @@ func (fw *fileWriter) writeLog(m *writeLogMsg) {
var preFormat string
if IsTraceEnabled() {
_, file, line, _ := runtime.Caller(4)
preFormat = fmt.Sprintf("%s %s [%s] %s:%d %s\n", time.Now().Format(time.RFC3339), m.mLevel, m.name, file, line, m.format)
preFormat = fmt.Sprintf("%s %s %s:%d %s\n", time.Now().Format(time.RFC3339), m.mLevel, file, line, m.format)
} else {
preFormat = fmt.Sprintf("%s %s [%s] %s\n", time.Now().Format(time.RFC3339), m.mLevel, m.name, m.format)
preFormat = fmt.Sprintf("%s %s %s\n", time.Now().Format(time.RFC3339), m.mLevel, m.format)
}

str := fmt.Sprintf(preFormat, m.args...)
Expand Down
145 changes: 11 additions & 134 deletions logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,64 +9,16 @@ import (
)

var (
globalLoadedConfig = false
globalLevels = make(map[string]Level)
globalLoggers = make(map[string]Logger)
globalWriters = []Writer{getDefaultWriter()}
globalLogger = New("")
globalTraceEnabled = false
)

// Logger interface exposed to users
type Logger interface {
Err(format string, args ...interface{}) error
Error(format string, args ...interface{})
Warn(format string, args ...interface{})
Info(format string, args ...interface{})
Debug(format string, args ...interface{})
Panic(format string, args ...interface{})
SetLevel(Level)
}

// Writer writer interface
type Writer interface {
WriteLog(name string, logLevel Level, format string, args []interface{})
WriteLog(logLevel Level, format string, args []interface{})
SetLevel(level Level)
}

// logger instance
type logger struct {
level Level
name string
}

// New constructor
func New(name string) Logger {
// level
var lvl Level
if l, ok := globalLevels[name]; ok {
lvl = l
} else {
lvl = globalLevels[""]
}

l := &logger{lvl, name}
globalLoggers[name] = l

if !globalLoadedConfig {
LoadLogProperties()
globalLoadedConfig = true
}

return l
}

// SetDefaultLevel sets the default logging level. It defaults to WARN
func SetDefaultLevel(l Level) {
globalLevels[""] = l
globalLogger.SetLevel(l)
}

// SetTrace when set to true, the log will print file names and line numbers
func SetTrace(trace bool) {
globalTraceEnabled = trace
Expand All @@ -77,109 +29,53 @@ func IsTraceEnabled() bool {
return globalTraceEnabled
}

// SetLoggerLevels sets the levels for all existing loggers and future loggers
func SetLoggerLevels(levels map[string]Level) {
//
for k, lev := range levels {
if log, ok := globalLoggers[k]; ok {
log.SetLevel(lev)
}
}

// make sure there is always a root logger level
if _, ok := levels[""]; !ok {
levels[""] = WARN
}

//
globalLevels = levels
}

// SetWriters sets the writers for all the loggers
func SetWriters(w []Writer) {
globalWriters = w
}

// Err logs at error level and returns the error
func (l *logger) Err(format string, a ...interface{}) error {
PrintLog(l.name, l.level, ERROR, format, a)
return fmt.Errorf(format, a...)
}

// Error logs at error level
func (l *logger) Error(format string, a ...interface{}) {
PrintLog(l.name, l.level, ERROR, format, a)
}

// Info logs at info level
func (l *logger) Info(format string, a ...interface{}) {
PrintLog(l.name, l.level, INFO, format, a)
}

// Warn logs at wanr level
func (l *logger) Warn(format string, a ...interface{}) {
PrintLog(l.name, l.level, WARN, format, a)
}

// Debug logs at debug level
func (l *logger) Debug(format string, a ...interface{}) {
PrintLog(l.name, l.level, DEBUG, format, a)
}

// Panic error and exit
func (l *logger) Panic(format string, a ...interface{}) {
PrintLog(l.name, l.level, ERROR, format, a)
panic("panic!")
}

// SetLevel set logger level
func (l *logger) SetLevel(level Level) {
l.level = level
}

// PrintLog sends a log message to the writers.
// name: logger name
// loggerLevel: the level of the logger implementation
// logLevel: the level of the message. If the level of the message is greater than loggerLevel the log will bi discarted
// format: log format. See fmt.Printf
// a...: arguments. See fmt.Printf
func PrintLog(name string, loggerLevel, logLevel Level, format string, a []interface{}) {
if loggerLevel < logLevel {
return
}
func PrintLog(logLevel Level, format string, a []interface{}) {
for _, w := range globalWriters {
w.WriteLog(name, logLevel, format, a)
w.WriteLog(logLevel, format, a)
}
}

// Err log to root logger
func Err(format string, a ...interface{}) error {
return globalLogger.Err(format, a...)
PrintLog(ERROR, format, a)
return fmt.Errorf(format, a...)
}

// Error log to root logger
func Error(format string, a ...interface{}) {
globalLogger.Error(format, a...)
PrintLog(ERROR, format, a)
}

// Info log to root logger
func Info(format string, a ...interface{}) {
globalLogger.Info(format, a...)
PrintLog(INFO, format, a)
}

// Warn log to root logger
func Warn(format string, a ...interface{}) {
globalLogger.Warn(format, a...)
PrintLog(WARN, format, a)
}

// Debug log to root logger
func Debug(format string, a ...interface{}) {
globalLogger.Debug(format, a...)
PrintLog(DEBUG, format, a)
}

// Panic log to root logger
func Panic(format string, a ...interface{}) {
globalLogger.Panic(format, a...)
PrintLog(ERROR, format, a)
panic(fmt.Errorf(format, a...))
}

// resolves configuration
Expand Down Expand Up @@ -219,24 +115,6 @@ func LoadLogProperties() {
SetTrace(true)
}

//
// Levels
//
logLevels := make(map[string]Level)
logLevels[""] = StrToLevel(props.GetString("log.level", ""))
for k, v := range props.Map() {
if !strings.HasPrefix(k, "log.level.") {
continue
}

parts := strings.Split(k, ".")
if len(parts) != 3 {
continue
}
loggerName := parts[2] //log.level.name1=stdout|file
logLevels[loggerName] = StrToLevel(v)
}

//
// Writers
//
Expand Down Expand Up @@ -274,7 +152,6 @@ func LoadLogProperties() {
}
}

SetLoggerLevels(logLevels)
if len(logWriters) > 0 {
SetWriters(logWriters)
}
Expand Down
14 changes: 9 additions & 5 deletions stdout_writer.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,13 @@ type WriterStdout struct {
level Level
}

// NewStdoutWriter constructor
func NewStdoutWriter(level Level) Writer {
return &WriterStdout{level}
}

// WriteLog implementation of logger.Writer
func (w *WriterStdout) WriteLog(
name string,
mLevel Level,
format string,
args []interface{},
Expand All @@ -26,11 +30,11 @@ func (w *WriterStdout) WriteLog(
var preFormatArgs []interface{}
if IsTraceEnabled() {
_, file, line, _ := runtime.Caller(4)
preFormatStr = "%s %s [%s] %s:%d %s\n"
preFormatArgs = []interface{}{time.Now().Format(time.RFC3339), mLevel.StringColor(), name, file, line, format}
preFormatStr = "%s %s %s:%d %s\n"
preFormatArgs = []interface{}{time.Now().Format(time.RFC3339), mLevel.StringColor(), file, line, format}
} else {
preFormatStr = "%s %s [%s] %s\n"
preFormatArgs = []interface{}{time.Now().Format(time.RFC3339), mLevel.StringColor(), name, format}
preFormatStr = "%s %s %s\n"
preFormatArgs = []interface{}{time.Now().Format(time.RFC3339), mLevel.StringColor(), format}
}

preFormat := fmt.Sprintf(preFormatStr, preFormatArgs...)
Expand Down

0 comments on commit 9589249

Please sign in to comment.