[logger] 支持从配置中读取日志等级
This commit is contained in:
parent
3b105251bb
commit
e3093c1b73
|
|
@ -56,22 +56,6 @@ var StartCmd = &cobra.Command{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Log.Info("进程列表:")
|
|
||||||
for i, p := range procs {
|
|
||||||
if i >= 10 {
|
|
||||||
logger.Log.Info("... (仅显示前10个进程)")
|
|
||||||
break
|
|
||||||
}
|
|
||||||
logger.Log.Info(
|
|
||||||
"进程信息",
|
|
||||||
zap.Int32("pid", p.PID),
|
|
||||||
zap.String("name", p.Name),
|
|
||||||
zap.String("path", p.Path),
|
|
||||||
zap.String("cmdline", p.Cmdline),
|
|
||||||
zap.Stringer("data", p),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ====== 文件扫描和存储 ======
|
// ====== 文件扫描和存储 ======
|
||||||
logger.Log.Info("正在扫描文件系统...")
|
logger.Log.Info("正在扫描文件系统...")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,10 @@ server:
|
||||||
host: "127.0.0.1"
|
host: "127.0.0.1"
|
||||||
port: 8080
|
port: 8080
|
||||||
|
|
||||||
|
log:
|
||||||
|
level: "info"
|
||||||
|
# level: "debug"
|
||||||
|
|
||||||
audit:
|
audit:
|
||||||
enabled: true
|
enabled: true
|
||||||
server: "192.168.1.100"
|
server: "192.168.1.100"
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,16 @@
|
||||||
package config
|
package config
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
|
Log LogConfig `yaml:"log"`
|
||||||
Audit AuditConfig `yaml:"audit"`
|
Audit AuditConfig `yaml:"audit"`
|
||||||
Scanner ScannerConfig `yaml:"scanner"`
|
Scanner ScannerConfig `yaml:"scanner"`
|
||||||
Storage StorageConfig `yaml:"storage"`
|
Storage StorageConfig `yaml:"storage"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type LogConfig struct {
|
||||||
|
Level string `yaml:"level"`
|
||||||
|
}
|
||||||
|
|
||||||
type AuditConfig struct {
|
type AuditConfig struct {
|
||||||
Enabled bool `yaml:"enabled"`
|
Enabled bool `yaml:"enabled"`
|
||||||
Server string `yaml:"server"`
|
Server string `yaml:"server"`
|
||||||
|
|
|
||||||
9
main.go
9
main.go
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"sysmonitord/cmd/start"
|
"sysmonitord/cmd/start"
|
||||||
"sysmonitord/cmd/version"
|
"sysmonitord/cmd/version"
|
||||||
|
"sysmonitord/internal/config"
|
||||||
"sysmonitord/pkg/logger"
|
"sysmonitord/pkg/logger"
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
|
@ -14,6 +15,14 @@ func main() {
|
||||||
logger.InitLogger()
|
logger.InitLogger()
|
||||||
defer logger.Sync()
|
defer logger.Sync()
|
||||||
|
|
||||||
|
cfg, err := config.LoadConfig("./config.yaml")
|
||||||
|
if err != nil {
|
||||||
|
logger.Log.Error("加载配置文件失败", zap.Error(err))
|
||||||
|
os.Exit(1)
|
||||||
|
} else {
|
||||||
|
logger.SetLogLevel(cfg.Log.Level)
|
||||||
|
}
|
||||||
|
|
||||||
var rootCmd = &cobra.Command{
|
var rootCmd = &cobra.Command{
|
||||||
Use: "sysmonitord",
|
Use: "sysmonitord",
|
||||||
Short: "Sysmonitord 是一个 Linux 系统安全监控工具",
|
Short: "Sysmonitord 是一个 Linux 系统安全监控工具",
|
||||||
|
|
|
||||||
|
|
@ -7,9 +7,14 @@ import (
|
||||||
"go.uber.org/zap/zapcore"
|
"go.uber.org/zap/zapcore"
|
||||||
)
|
)
|
||||||
|
|
||||||
var Log *zap.Logger
|
var (
|
||||||
|
Log *zap.Logger
|
||||||
|
atom zap.AtomicLevel
|
||||||
|
)
|
||||||
|
|
||||||
func InitLogger() {
|
func InitLogger() {
|
||||||
|
atom = zap.NewAtomicLevelAt(zapcore.InfoLevel)
|
||||||
|
|
||||||
encoderConfig := zapcore.EncoderConfig{
|
encoderConfig := zapcore.EncoderConfig{
|
||||||
TimeKey: "time",
|
TimeKey: "time",
|
||||||
LevelKey: "level",
|
LevelKey: "level",
|
||||||
|
|
@ -18,22 +23,35 @@ func InitLogger() {
|
||||||
MessageKey: "msg",
|
MessageKey: "msg",
|
||||||
StacktraceKey: "stacktrace",
|
StacktraceKey: "stacktrace",
|
||||||
LineEnding: zapcore.DefaultLineEnding,
|
LineEnding: zapcore.DefaultLineEnding,
|
||||||
EncodeLevel: zapcore.LowercaseLevelEncoder,
|
EncodeLevel: zapcore.LowercaseColorLevelEncoder,
|
||||||
EncodeTime: zapcore.ISO8601TimeEncoder,
|
EncodeTime: zapcore.ISO8601TimeEncoder,
|
||||||
EncodeDuration: zapcore.StringDurationEncoder,
|
EncodeDuration: zapcore.StringDurationEncoder,
|
||||||
EncodeCaller: zapcore.ShortCallerEncoder,
|
EncodeCaller: zapcore.ShortCallerEncoder,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Debug
|
|
||||||
consoleEncoder := zapcore.NewConsoleEncoder(encoderConfig)
|
consoleEncoder := zapcore.NewConsoleEncoder(encoderConfig)
|
||||||
|
|
||||||
core := zapcore.NewTee(
|
core := zapcore.NewTee(
|
||||||
zapcore.NewCore(consoleEncoder, zapcore.AddSync(os.Stdout), zap.DebugLevel),
|
zapcore.NewCore(consoleEncoder, zapcore.AddSync(os.Stdout), atom),
|
||||||
)
|
)
|
||||||
|
|
||||||
Log = zap.New(core, zap.AddCaller())
|
Log = zap.New(core, zap.AddCaller())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SetLogLevel(levelStr string) {
|
||||||
|
if atom == (zap.AtomicLevel{}) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var level zapcore.Level
|
||||||
|
if err := level.UnmarshalText([]byte(levelStr)); err != nil {
|
||||||
|
Log.Warn("无效的日志级别,使用默认级别 info", zap.String("输入级别", levelStr))
|
||||||
|
atom.SetLevel(zapcore.InfoLevel)
|
||||||
|
} else {
|
||||||
|
atom.SetLevel(level)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func Sync() {
|
func Sync() {
|
||||||
if Log != nil {
|
if Log != nil {
|
||||||
_ = Log.Sync()
|
_ = Log.Sync()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user