chore: 完善日志库。可维护比性能更重要。

This commit is contained in:
tiglog 2023-07-14 16:03:51 +08:00
parent b3ed0b7429
commit 9a59bf88dd
7 changed files with 47 additions and 30 deletions

View File

@ -10,11 +10,9 @@ package logger
import ( import (
"os" "os"
"sync" "sync"
"time"
"github.com/natefinch/lumberjack" "github.com/natefinch/lumberjack"
"github.com/rs/zerolog" "github.com/rs/zerolog"
"github.com/rs/zerolog/pkgerrors"
) )
var access_once sync.Once var access_once sync.Once
@ -29,8 +27,6 @@ func SetupAccessLogFile(path string) {
func Access() *zerolog.Logger { func Access() *zerolog.Logger {
access_once.Do(func() { access_once.Do(func() {
zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack
zerolog.TimeFieldFormat = time.RFC3339Nano
fileLogger := &lumberjack.Logger{ fileLogger := &lumberjack.Logger{
Filename: access_log_path, Filename: access_log_path,
@ -43,9 +39,11 @@ func Access() *zerolog.Logger {
output := zerolog.MultiLevelWriter(os.Stderr, fileLogger) output := zerolog.MultiLevelWriter(os.Stderr, fileLogger)
l := zerolog.New(output). l := zerolog.New(output).
Level(zerolog.InfoLevel). Level(loggerLevel).
With(). With().
Timestamp(). Timestamp().
Stack().
CallerWithSkipFrameCount(2).
Logger() Logger()
access_log = &l access_log = &l

View File

@ -10,11 +10,9 @@ package logger
import ( import (
"os" "os"
"sync" "sync"
"time"
"github.com/natefinch/lumberjack" "github.com/natefinch/lumberjack"
"github.com/rs/zerolog" "github.com/rs/zerolog"
"github.com/rs/zerolog/pkgerrors"
) )
var console_once sync.Once var console_once sync.Once
@ -29,8 +27,6 @@ func SetupConsoleLogFile(path string) {
func Console() *zerolog.Logger { func Console() *zerolog.Logger {
console_once.Do(func() { console_once.Do(func() {
zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack
zerolog.TimeFieldFormat = time.RFC3339Nano
fileLogger := &lumberjack.Logger{ fileLogger := &lumberjack.Logger{
Filename: console_log_path, Filename: console_log_path,
@ -43,9 +39,11 @@ func Console() *zerolog.Logger {
output := zerolog.MultiLevelWriter(os.Stderr, fileLogger) output := zerolog.MultiLevelWriter(os.Stderr, fileLogger)
l := zerolog.New(output). l := zerolog.New(output).
Level(zerolog.InfoLevel). Level(loggerLevel).
With(). With().
Timestamp(). Timestamp().
Stack().
CallerWithSkipFrameCount(2).
Logger() Logger()
console_log = &l console_log = &l

30
logger/init.go Normal file
View File

@ -0,0 +1,30 @@
//
// init.go
// Copyright (C) 2023 tiglog <me@tiglog.com>
//
// Distributed under terms of the MIT license.
//
package logger
import (
"strconv"
"time"
"github.com/rs/zerolog"
"github.com/rs/zerolog/pkgerrors"
)
var loggerLevel = zerolog.InfoLevel
func init() {
zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack
zerolog.TimeFieldFormat = time.RFC3339Nano
zerolog.CallerMarshalFunc = func(pc uintptr, file string, line int) string {
return file + ":" + strconv.Itoa(line)
}
}
func SetLevel(level zerolog.Level) {
loggerLevel = level
}

View File

@ -10,31 +10,23 @@ package logger
import ( import (
"os" "os"
"sync" "sync"
"time"
"github.com/natefinch/lumberjack" "github.com/natefinch/lumberjack"
"github.com/rs/zerolog" "github.com/rs/zerolog"
"github.com/rs/zerolog/pkgerrors"
) )
var once sync.Once var once sync.Once
var log_path = "./var/log/app.log" var log_path = "./var/log/app.log"
var log_level = zerolog.InfoLevel
func SetLogPath(path string) { func SetLogPath(path string) {
log_path = path log_path = path
} }
func SetLogLevel(level zerolog.Level) {
log_level = level
}
var log *zerolog.Logger var log *zerolog.Logger
func Get() *zerolog.Logger { func Get() *zerolog.Logger {
once.Do(func() { once.Do(func() {
zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack
zerolog.TimeFieldFormat = time.RFC3339Nano
fileLogger := &lumberjack.Logger{ fileLogger := &lumberjack.Logger{
Filename: log_path, Filename: log_path,
@ -47,9 +39,11 @@ func Get() *zerolog.Logger {
output := zerolog.MultiLevelWriter(os.Stderr, fileLogger) output := zerolog.MultiLevelWriter(os.Stderr, fileLogger)
l := zerolog.New(output). l := zerolog.New(output).
Level(log_level). Level(loggerLevel).
With(). With().
Timestamp(). Timestamp().
Stack().
CallerWithSkipFrameCount(2).
Logger() Logger()
log = &l log = &l
}) })

View File

@ -8,6 +8,7 @@
package logger_test package logger_test
import ( import (
"errors"
"testing" "testing"
"git.hexq.cn/tiglog/golib/gtest" "git.hexq.cn/tiglog/golib/gtest"
@ -18,5 +19,6 @@ func TestLogToFile(t *testing.T) {
// logger.SetupLog("./var/log/test.log", zerolog.DebugLevel) // logger.SetupLog("./var/log/test.log", zerolog.DebugLevel)
var log = logger.Get() var log = logger.Get()
gtest.NotNil(t, log) gtest.NotNil(t, log)
log.Log().Msg("hello world") err := errors.New("test error")
log.Log().Err(err).Msg("hello world")
} }

View File

@ -10,11 +10,9 @@ package logger
import ( import (
"os" "os"
"sync" "sync"
"time"
"github.com/natefinch/lumberjack" "github.com/natefinch/lumberjack"
"github.com/rs/zerolog" "github.com/rs/zerolog"
"github.com/rs/zerolog/pkgerrors"
) )
var recover_once sync.Once var recover_once sync.Once
@ -29,8 +27,6 @@ func SetupRecoverLogFile(path string) {
func Recover() *zerolog.Logger { func Recover() *zerolog.Logger {
recover_once.Do(func() { recover_once.Do(func() {
zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack
zerolog.TimeFieldFormat = time.RFC3339Nano
fileLogger := &lumberjack.Logger{ fileLogger := &lumberjack.Logger{
Filename: recover_log_path, Filename: recover_log_path,
@ -46,6 +42,8 @@ func Recover() *zerolog.Logger {
// Level(zerolog.InfoLevel). // Level(zerolog.InfoLevel).
With(). With().
Timestamp(). Timestamp().
Stack().
CallerWithSkipFrameCount(2).
Logger() Logger()
recover_log = &l recover_log = &l

View File

@ -10,11 +10,9 @@ package logger
import ( import (
"os" "os"
"sync" "sync"
"time"
"github.com/natefinch/lumberjack" "github.com/natefinch/lumberjack"
"github.com/rs/zerolog" "github.com/rs/zerolog"
"github.com/rs/zerolog/pkgerrors"
) )
var work_once sync.Once var work_once sync.Once
@ -29,9 +27,6 @@ func SetupWorkLogFile(path string) {
func Work() *zerolog.Logger { func Work() *zerolog.Logger {
work_once.Do(func() { work_once.Do(func() {
zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack
zerolog.TimeFieldFormat = time.RFC3339Nano
fileLogger := &lumberjack.Logger{ fileLogger := &lumberjack.Logger{
Filename: work_log_path, Filename: work_log_path,
MaxSize: 5, // MaxSize: 5, //
@ -43,9 +38,11 @@ func Work() *zerolog.Logger {
output := zerolog.MultiLevelWriter(os.Stderr, fileLogger) output := zerolog.MultiLevelWriter(os.Stderr, fileLogger)
l := zerolog.New(output). l := zerolog.New(output).
Level(zerolog.InfoLevel). Level(loggerLevel).
With(). With().
Timestamp(). Timestamp().
Stack().
CallerWithSkipFrameCount(2).
Logger() Logger()
work_log = &l work_log = &l