agent/session/plugin/log/assistlog.go (47 lines of code) (raw):

package log import ( "os" "path/filepath" "time" rotatelogs "github.com/lestrrat-go/file-rotatelogs" log "github.com/sirupsen/logrus" "github.com/pkg/errors" ) var Log *log.Logger var defaultLevel log.Level = log.InfoLevel type Fields = log.Fields // DefaultCommonFields returns preset fields for each log message. All default // common fields MUST be prefixed by an underscore to avoid conflict with fields // added later. func DefaultCommonFields() log.Fields { return log.Fields{ "_pid": os.Getpid(), } } func InitLog(filename string, logpath string, ignoreRotationError bool) { if logpath != "" { logpath = filepath.Join(logpath, "log") } else { path, _ := os.Executable() logpath = filepath.Join(filepath.Dir(path), "log") } os.MkdirAll(logpath, os.ModePerm) writer, err := rotatelogs.New( filepath.Join(logpath, filename+".%Y%m%d"), rotatelogs.WithMaxAge(time.Duration(24*30)*time.Hour), //最长保留30天 rotatelogs.WithRotationTime(time.Duration(24)*time.Hour), //每天进行一次日志切割 rotatelogs.WithLinkName(filepath.Join(logpath, filename)), // 为日志文件创建一个名字不变的链接 ) if err != nil { log.Errorf("config local file system logger error. %+v", errors.WithStack(err)) } Log = log.New() Log.SetFormatter(&CustomLogrusTextFormatter{ CommonFields: DefaultCommonFields(), }) Log.SetOutput(writer) Log.SetLevel(defaultLevel) } func GetLogger() *log.Logger { if Log == nil { InitLog("aliyun_ecs_session_log", "", false) } return Log }