فهرست منبع

添加 syslog 支持,在配置文件的 Settings - ExperimentalFunction - ExtendLog 添加启动的配置

Signed-off-by: allan716 <[email protected]>
allan716 3 سال پیش
والد
کامیت
c0c2e98ccc

+ 4 - 2
cmd/chinesesubfinder/main.go

@@ -36,9 +36,11 @@ func newLog() *logrus.Logger {
 	} else {
 		level = logrus.InfoLevel
 	}
-	logger := log_helper.NewLogHelper(log_helper.LogNameChineseSubFinder,
+	logger := log_helper.NewLogHelper(
+		log_helper.LogNameChineseSubFinder,
 		global_value.ConfigRootDirFPath(),
-		level, time.Duration(7*24)*time.Hour, time.Duration(24)*time.Hour)
+		level, time.Duration(7*24)*time.Hour, time.Duration(24)*time.Hour,
+		settings.GetSettings().ExperimentalFunction.ExtendLog)
 	logger.AddHook(log_helper.NewLoggerHub())
 
 	return logger

+ 31 - 0
pkg/extend_log/darwin.go

@@ -0,0 +1,31 @@
+//go:build darwin
+
+package extend_log
+
+import (
+	"log/syslog"
+
+	"github.com/allanpk716/ChineseSubFinder/pkg/settings"
+	"github.com/sirupsen/logrus"
+)
+
+type ExtendLog struct {
+}
+
+func (e *ExtendLog) AddHook(log *logrus.Logger, extendLog settings.ExtendLog) {
+
+	if extendLog.SysLog.Enable == true {
+		pri := syslog.LOG_DEBUG
+		if extendLog.SysLog.Tag == 1 {
+			pri = syslog.LOG_INFO
+		}
+		hook, err := lSyslog.NewSyslogHook(
+			extendLog.SysLog.Network,
+			extendLog.SysLog.Address,
+			pri,
+			extendLog.SysLog.Tag)
+		if err == nil {
+			log.Hooks.Add(hook)
+		}
+	}
+}

+ 5 - 0
pkg/extend_log/exteng_log.go

@@ -0,0 +1,5 @@
+package extend_log
+
+type ExtendLogEx struct {
+	ExtendLog
+}

+ 31 - 0
pkg/extend_log/linux.go

@@ -0,0 +1,31 @@
+//go:build linux
+
+package extend_log
+
+import (
+	"log/syslog"
+
+	"github.com/allanpk716/ChineseSubFinder/pkg/settings"
+	"github.com/sirupsen/logrus"
+)
+
+type ExtendLog struct {
+}
+
+func (e *ExtendLog) AddHook(log *logrus.Logger, extendLog settings.ExtendLog) {
+
+	if extendLog.SysLog.Enable == true {
+		pri := syslog.LOG_DEBUG
+		if extendLog.SysLog.Tag == 1 {
+			pri = syslog.LOG_INFO
+		}
+		hook, err := lSyslog.NewSyslogHook(
+			extendLog.SysLog.Network,
+			extendLog.SysLog.Address,
+			pri,
+			extendLog.SysLog.Tag)
+		if err == nil {
+			log.Hooks.Add(hook)
+		}
+	}
+}

+ 15 - 0
pkg/extend_log/windows.go

@@ -0,0 +1,15 @@
+//go:build windows
+
+package extend_log
+
+import (
+	"github.com/allanpk716/ChineseSubFinder/pkg/settings"
+	"github.com/sirupsen/logrus"
+)
+
+type ExtendLog struct {
+}
+
+func (e *ExtendLog) AddHook(log *logrus.Logger, extendLog settings.ExtendLog) {
+
+}

+ 10 - 1
pkg/log_helper/loghelper.go

@@ -6,13 +6,18 @@ import (
 	"path/filepath"
 	"time"
 
+	"github.com/allanpk716/ChineseSubFinder/pkg/settings"
+
+	"github.com/allanpk716/ChineseSubFinder/pkg/extend_log"
+
 	"github.com/allanpk716/ChineseSubFinder/pkg/global_value"
 	rotatelogs "github.com/lestrrat-go/file-rotatelogs"
 	"github.com/sirupsen/logrus"
+
 	easy "github.com/t-tomalak/logrus-easy-formatter"
 )
 
-func NewLogHelper(appName string, logStorePath string, level logrus.Level, maxAge time.Duration, rotationTime time.Duration) *logrus.Logger {
+func NewLogHelper(appName string, logStorePath string, level logrus.Level, maxAge time.Duration, rotationTime time.Duration, extendLog ...settings.ExtendLog) *logrus.Logger {
 
 	Logger := logrus.New()
 	Logger.Formatter = &easy.Formatter{
@@ -32,6 +37,10 @@ func NewLogHelper(appName string, logStorePath string, level logrus.Level, maxAg
 	Logger.SetLevel(level)
 	Logger.SetOutput(io.MultiWriter(os.Stderr, writer))
 
+	if len(extendLog) > 0 {
+		exLog := extend_log.ExtendLogEx{}
+		exLog.AddHook(Logger, extendLog[0])
+	}
 	// 可以输出函数调用还文件位置
 	//if level == logrus.DebugLevel {
 	//	Logger.SetReportCaller(true)

+ 1 - 0
pkg/settings/experimental_function.go

@@ -8,6 +8,7 @@ type ExperimentalFunction struct {
 	ApiKeySettings       ApiKeySettings       `json:"api_key_settings"`
 	LocalChromeSettings  LocalChromeSettings  `json:"local_chrome_settings"`
 	ShareSubSettings     ShareSubSettings     `json:"share_sub_settings"`
+	ExtendLog            ExtendLog            `json:"extend_log"`
 }
 
 func NewExperimentalFunction() *ExperimentalFunction {

+ 13 - 0
pkg/settings/extend_log.go

@@ -0,0 +1,13 @@
+package settings
+
+type ExtendLog struct {
+	SysLog SysLog
+}
+
+type SysLog struct {
+	Enable   bool   `json:"enable"`
+	Network  string `json:"network"`  // 留空就是本地 udp
+	Address  string `json:"address"`  // 留空就是本地 localhost:514
+	Priority int    `json:"priority"` // Debug 0, Info 1
+	Tag      string `json:"tag"`
+}