123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- package mhayaLogger
- import (
- "fmt"
- cprofile "github.com/mhaya/profile"
- "time"
- cfacade "github.com/mhaya/facade"
- "go.uber.org/zap/zapcore"
- )
- type (
- Config struct {
- LogLevel string `json:"level"` // 输出日志等级
- StackLevel string `json:"stack_level"` // 堆栈输出日志等级
- EnableConsole bool `json:"enable_console"` // 是否控制台输出
- EnableWriteFile bool `json:"enable_write_file"` // 是否输出文件(必需配置FilePath)
- MaxAge int `json:"max_age"` // 最大保留天数(达到限制,则会被清理)
- TimeFormat string `json:"time_format"` // 打印时间输出格式
- PrintCaller bool `json:"print_caller"` // 是否打印调用函数
- RotationTime int `json:"rotation_time"` // 日期分割时间(秒)
- FileLinkPath string `json:"file_link_path"` // 日志文件连接路径
- FilePathFormat string `json:"file_path_format"` // 日志文件路径格式
- IncludeStdout bool `json:"include_stdout"` // 是否包含os.stdout输出
- IncludeStderr bool `json:"include_stderr"` // 是否包含os.stderr输出
- }
- )
- func defaultConsoleConfig() *Config {
- config := &Config{
- LogLevel: "debug",
- StackLevel: "error",
- EnableConsole: true,
- EnableWriteFile: false,
- MaxAge: 7,
- TimeFormat: "15:04:05.000", //2006-01-02 15:04:05.000
- PrintCaller: true,
- RotationTime: 86400,
- FileLinkPath: "logs/debug.log",
- FilePathFormat: "logs/debug_%Y%m%d%H%M.log",
- IncludeStdout: false,
- IncludeStderr: false,
- }
- return config
- }
- func NewConfig(jsonConfig cfacade.ProfileJSON) (*Config, error) {
- config := &Config{
- LogLevel: jsonConfig.GetString("level", "debug"),
- StackLevel: jsonConfig.GetString("stack_level", "error"),
- EnableConsole: jsonConfig.GetBool("enable_console", true),
- EnableWriteFile: jsonConfig.GetBool("enable_write_file", false),
- MaxAge: jsonConfig.GetInt("max_age", 7),
- TimeFormat: jsonConfig.GetString("time_format", "15:04:05.000"),
- PrintCaller: jsonConfig.GetBool("print_caller", true),
- RotationTime: jsonConfig.GetInt("rotation_time", 86400),
- FileLinkPath: jsonConfig.GetString("file_link_path", ""),
- FilePathFormat: jsonConfig.GetString("file_path_format", ""),
- IncludeStdout: jsonConfig.GetBool("include_stdout", false),
- IncludeStderr: jsonConfig.GetBool("include_stderr", false),
- }
- if config.EnableWriteFile {
- if config.FileLinkPath == "" {
- defaultValue := fmt.Sprintf("logs/%s.log", config.LogLevel)
- config.FileLinkPath = jsonConfig.GetString("file_link_path", defaultValue)
- }
- if config.FilePathFormat == "" {
- defaultValue := fmt.Sprintf("logs/%s_%s.log", config.LogLevel, "%Y%m%d%H%M")
- config.FilePathFormat = jsonConfig.GetString("file_path_format", defaultValue)
- }
- }
- return config, nil
- }
- func NewConfigWithName(refLoggerName string) (*Config, error) {
- loggerConfig := cprofile.GetConfig("logger")
- if loggerConfig.LastError() != nil {
- return nil, loggerConfig.LastError()
- }
- jsonConfig := loggerConfig.GetConfig(refLoggerName)
- if jsonConfig.LastError() != nil {
- return nil, jsonConfig.LastError()
- }
- return NewConfig(jsonConfig)
- }
- func (c *Config) TimeEncoder() zapcore.TimeEncoder {
- return func(time time.Time, encoder zapcore.PrimitiveArrayEncoder) {
- encoder.AppendString(time.Format(c.TimeFormat))
- }
- }
|