|
|
@@ -0,0 +1,98 @@
|
|
|
+package jobs
|
|
|
+
|
|
|
+import (
|
|
|
+ "IotAdmin/core/logger"
|
|
|
+ "IotAdmin/core/sdk/config"
|
|
|
+ cLog "IotAdmin/core/sdk/pkg/logger"
|
|
|
+ "IotAdmin/core/tools/writer"
|
|
|
+ "fmt"
|
|
|
+ "log"
|
|
|
+ "sync"
|
|
|
+)
|
|
|
+
|
|
|
+var jobLogger *JobLogger
|
|
|
+var once sync.Once
|
|
|
+
|
|
|
+type JobLogger struct {
|
|
|
+ *logger.Helper
|
|
|
+}
|
|
|
+
|
|
|
+func init() {
|
|
|
+ GetJobLogger()
|
|
|
+}
|
|
|
+
|
|
|
+func GetJobLogger() *JobLogger {
|
|
|
+ once.Do(func() {
|
|
|
+ loggerHelper := setupJobLogger()
|
|
|
+ jobLogger = &JobLogger{
|
|
|
+ loggerHelper,
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return jobLogger
|
|
|
+}
|
|
|
+
|
|
|
+// setupJobLogger 设置设备日志组件
|
|
|
+func setupJobLogger() *logger.Helper {
|
|
|
+ path := getJobLogPath()
|
|
|
+ logCap := config.LoggerConfig.Cap
|
|
|
+ if logCap == 0 {
|
|
|
+ logCap = 1024
|
|
|
+ }
|
|
|
+ output, err := writer.NewFileWriter(
|
|
|
+ writer.WithPath(path),
|
|
|
+ writer.WithCap(logCap<<10),
|
|
|
+ writer.WithSuffix("log"),
|
|
|
+ )
|
|
|
+ if err != nil {
|
|
|
+ log.Printf("job logger setup error: %s \r\n", err.Error())
|
|
|
+ }
|
|
|
+ level := logger.DebugLevel
|
|
|
+ if config.ApplicationConfig.Mode == "prod" {
|
|
|
+ level = logger.InfoLevel
|
|
|
+ }
|
|
|
+ return logger.NewHelper(logger.NewLogger(logger.WithLevel(level), logger.WithOutput(output), logger.WithName("JOB")))
|
|
|
+}
|
|
|
+
|
|
|
+func getJobLogPath() string {
|
|
|
+ path := config.LoggerConfig.Path
|
|
|
+ if path == "" {
|
|
|
+ path = "_logs/"
|
|
|
+ } else if path[len(path)-1] != '/' {
|
|
|
+ path += "/"
|
|
|
+ }
|
|
|
+ path += "jobs"
|
|
|
+ return path
|
|
|
+}
|
|
|
+
|
|
|
+func CleanJobLog(days int) error {
|
|
|
+ path := getJobLogPath()
|
|
|
+ return cLog.DeleteLogsOlderThan(path, "log", days)
|
|
|
+}
|
|
|
+func (j *JobLogger) Info(msg string, args ...interface{}) {
|
|
|
+ msg = "[CRON]" + msg
|
|
|
+ if len(args) > 0 {
|
|
|
+ for _, v := range args {
|
|
|
+ msg += fmt.Sprintf(" %v", v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ j.Helper.Info(msg)
|
|
|
+}
|
|
|
+func (j *JobLogger) Infof(msg string, args ...interface{}) {
|
|
|
+ msg = "[JobCore]" + msg
|
|
|
+ j.Helper.Infof(msg, args...)
|
|
|
+}
|
|
|
+
|
|
|
+func (j *JobLogger) Error(err error, msg string, args ...interface{}) {
|
|
|
+ msg = "[CRON]" + msg
|
|
|
+ if len(args) > 0 {
|
|
|
+ for _, v := range args {
|
|
|
+ msg += fmt.Sprintf("%v ", v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ j.Helper.Errorf("%s; ERROR: %s", msg, err.Error())
|
|
|
+}
|
|
|
+
|
|
|
+func (j *JobLogger) Errorf(msg string, args ...interface{}) {
|
|
|
+ msg = "[JobCore]" + msg
|
|
|
+ j.Helper.Errorf(msg, args...)
|
|
|
+}
|