ソースを参照

更新日志系统配置和关闭逻辑

将默认错误日志输出从stdout更改为stderr,并在初始化完成后添加了关闭logger的逻辑。同时,改进了wrapperWriterClose的Close方法以确保writer被正确关闭和清理。
SongZihuan 2 週間 前
コミット
ed6b12a9df

+ 1 - 0
CHANGELOG.md

@@ -31,6 +31,7 @@
 ### 重构
 
 - 减少`import resource "github.com/SongZihuan/BackendServerTemplate"`的引用。
+- 对日志系统进行跳转:错误日志默认输出到`stderr`。
 
 ## [0.1.0] - 2025-04-03
 

+ 2 - 2
src/config/logger_writer_config.go

@@ -32,7 +32,7 @@ func (d *LoggerWriterConfig) setDefault(c *configInfo) (err configerror.Error) {
 	d.WriteToStd = strings.ToLower(d.WriteToStd)
 
 	if d.WriteToStd == "" {
-		d.WriteToStd = "stdout"
+		d.WriteToStd = "stderr"
 	}
 
 	if d.WriteToDirWithDate != "" && d.WriteWithDatePrefix == "" {
@@ -56,7 +56,7 @@ func (d *LoggerWriterConfig) process(c *configInfo, setter func(w io.Writer) (io
 	case "stdout":
 		writerList = append(writerList, write.ChangeToWriter(os.Stdout))
 	case "stderr":
-		writerList = append(writerList, write.ChangeToWriter(os.Stdout))
+		writerList = append(writerList, write.ChangeToWriter(os.Stderr))
 	}
 
 	if d.WriteToFile != "" {

+ 4 - 0
src/logger/init_export.go

@@ -13,3 +13,7 @@ import (
 func InitBaseLogger(level loglevel.LoggerLevel, logTag bool, realPanic bool, warnWriter, errWriter io.Writer) error {
 	return internal.InitLogger(level, logTag, realPanic, warnWriter, errWriter)
 }
+
+func CloseLogger() {
+	internal.CloseLogger()
+}

+ 8 - 0
src/logger/write/warp_writer.go

@@ -19,3 +19,11 @@ func ChangeToWriter(w io.Writer) Writer {
 		writer: w,
 	}
 }
+
+func _testWarpWriter() {
+	var a *wrapperWriter
+	var b Writer
+
+	b = a
+	_ = b
+}

+ 19 - 1
src/logger/write/warp_writer_closer.go

@@ -14,7 +14,17 @@ func (w *wrapperWriterClose) Write(p []byte) (n int, err error) {
 	return w.writer.Write(p)
 }
 
-func (w *wrapperWriterClose) Close() error {
+func (w *wrapperWriterClose) Close() (err error) {
+	if w.writer != nil {
+		return nil
+	}
+
+	defer func() {
+		if err == nil {
+			w.writer = nil
+		}
+	}()
+
 	return w.writer.Close()
 }
 
@@ -27,3 +37,11 @@ func ChangeToWriteCloser(w io.WriteCloser) WriteCloser {
 		writer: w,
 	}
 }
+
+func _testWarpWriteCloser() {
+	var a *wrapperWriterClose
+	var b WriteCloser
+
+	b = a
+	_ = b
+}

+ 1 - 0
src/mainfunc/lion/v1/main.go

@@ -26,6 +26,7 @@ func MainV1() (exitCode int) {
 	if err != nil {
 		return exitutils.InitFailedErrorForLoggerModule(err.Error())
 	}
+	defer logger.CloseLogger()
 
 	err = commandlineargs.InitCommandLineArgsParser(nil)
 	if err != nil {

+ 1 - 0
src/mainfunc/tiger/v1/main.go

@@ -24,6 +24,7 @@ func MainV1() (exitCode int) {
 	if err != nil {
 		return exitutils.InitFailedErrorForLoggerModule(err.Error())
 	}
+	defer logger.CloseLogger()
 
 	err = commandlineargs.InitCommandLineArgsParser(nil)
 	if err != nil {