1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- package go_chat_api_util
- import (
- "github.com/lestrrat-go/file-rotatelogs"
- "github.com/sirupsen/logrus"
- "io"
- "time"
- )
- var log *logrus.Logger
- type RotateConfig struct {
- MaxAge time.Duration //最大时间
- RotationTime time.Duration //分隔间隔
- }
- type RotateOption func(config *RotateConfig)
- func WithMaxAge(age time.Duration) RotateOption {
- return func(q *RotateConfig) {
- q.MaxAge = age
- }
- }
- func WithRotationTime(roTime time.Duration) RotateOption {
- return func(config *RotateConfig) {
- config.RotationTime = roTime
- }
- }
- func NewLoggerByLogName(path string, options ...RotateOption) (*logrus.Logger, error) {
- co := &RotateConfig{MaxAge: 24 * 31 * 12 * time.Hour * 2, RotationTime: 7 * 24 * time.Hour}
- for _, v := range options {
- v(co)
- }
- writer, err := rotatelogs.New(
- path+"log%Y%m%d%H%M%S",
- rotatelogs.WithLinkName(path),
- rotatelogs.WithMaxAge(co.MaxAge),
- rotatelogs.WithRotationTime(co.RotationTime),
- )
- if err != nil {
- return nil, err
- }
- return NewLogger(writer), err
- }
- func NewLogger(f io.Writer) *logrus.Logger {
- log = logrus.New()
- log.Formatter = &logrus.JSONFormatter{}
- //f, err := os.OpenFile("./log/log.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
- //if err != nil {
- // panic("不能打开日志文件 " + err.Error())
- //}
- customF := new(logrus.JSONFormatter)
- customF.TimestampFormat = "2006-01-02 15:04:05"
- log.SetFormatter(customF)
- log.SetLevel(logrus.DebugLevel)
- //log.Out = f
- log.Out = f
- return log
- }
|