init
This commit is contained in:
107
ca-server/internal/logger/logger.go
Normal file
107
ca-server/internal/logger/logger.go
Normal file
@@ -0,0 +1,107 @@
|
||||
package logger
|
||||
|
||||
import (
|
||||
"ca-mini/internal/config"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"time"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
var (
|
||||
// Logger 日志记录器
|
||||
Logger *logrus.Logger
|
||||
// LogFile 日志文件
|
||||
LogFile *os.File
|
||||
// LogFilePath 日志文件路径
|
||||
LogFilePath string
|
||||
// LogFileName 日志文件名
|
||||
LogFileName string
|
||||
// LogFileExt 日志文件扩展名
|
||||
LogFileExt string
|
||||
)
|
||||
|
||||
// InitLogger 初始化日志记录器
|
||||
func InitLogger() {
|
||||
// 创建日志记录器
|
||||
Logger = logrus.New()
|
||||
|
||||
// 显示行号
|
||||
logrus.SetReportCaller(true)
|
||||
|
||||
// 设置日志格式
|
||||
Logger.SetFormatter(&logrus.JSONFormatter{
|
||||
TimestampFormat: "2006-01-02 15:04:05",
|
||||
})
|
||||
|
||||
cfg, err := config.Load()
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to load config: %v", err)
|
||||
}
|
||||
|
||||
// 设置日志级别
|
||||
level, err := logrus.ParseLevel(cfg.Logging.Level)
|
||||
if err != nil {
|
||||
log.Fatalf("Invalid log level: %v", err)
|
||||
}
|
||||
Logger.SetLevel(level)
|
||||
|
||||
// 设置日志输出到文件
|
||||
LogFilePath = cfg.Logging.Path
|
||||
if LogFilePath == "" {
|
||||
LogFilePath = "./logs"
|
||||
}
|
||||
if _, err := os.Stat(LogFilePath); os.IsNotExist(err) {
|
||||
err := os.MkdirAll(LogFilePath, os.ModePerm)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to create log directory: %v", err)
|
||||
}
|
||||
}
|
||||
LogFileName = fmt.Sprintf("ca-server-%s.log", time.Now().Format("2006-01-02"))
|
||||
LogFileExt = ".log"
|
||||
LogFile, err = os.OpenFile(filepath.Join(LogFilePath, LogFileName), os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to open log file: %v", err)
|
||||
}
|
||||
Logger.SetOutput(LogFile)
|
||||
}
|
||||
|
||||
// CloseLogger 关闭日志记录器
|
||||
func CloseLogger() {
|
||||
if LogFile != nil {
|
||||
err := LogFile.Close()
|
||||
if err != nil {
|
||||
if Logger != nil {
|
||||
Logger.Errorf("Failed to close log file: %v", err)
|
||||
} else {
|
||||
log.Printf("Failed to close log file: %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// LogDebugf 记录调试日志(格式化)
|
||||
func Debug(format string, args ...interface{}) {
|
||||
if Logger != nil {
|
||||
Logger.Debugf(format, args...)
|
||||
}
|
||||
}
|
||||
|
||||
// LogInfof 记录信息日志(格式化)
|
||||
func Info(format string, args ...interface{}) {
|
||||
if Logger != nil {
|
||||
Logger.Infof(format, args...)
|
||||
}
|
||||
}
|
||||
|
||||
// LogErrorf 记录错误日志(格式化)
|
||||
func Error(format string, args ...interface{}) {
|
||||
if Logger != nil {
|
||||
Logger.Errorf(format, args...)
|
||||
} else {
|
||||
log.Printf(format, args...)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user