mirror of
https://github.com/shadow1ng/fscan.git
synced 2025-09-14 05:56:46 +08:00

- 新增constants.go文件统一管理各包常量定义 - 提取logging、output、parsers、proxy包中的硬编码值 - 将30+个魔法数字替换为语义化常量 - 统一错误代码和消息格式 - 清理死代码和未使用变量 - 优化代码可维护性和可读性 - 保持完全向后兼容性 涉及包: - common/logging: 日志级别和格式常量 - common/output: 输出配置和格式常量 - common/parsers: 解析器配置和验证常量 - common/proxy: 代理协议和错误常量
76 lines
2.1 KiB
Go
76 lines
2.1 KiB
Go
package logging
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
// StandardFormatter 标准日志格式化器
|
|
type StandardFormatter struct {
|
|
startTime time.Time
|
|
}
|
|
|
|
// NewStandardFormatter 创建标准格式化器
|
|
func NewStandardFormatter() *StandardFormatter {
|
|
return &StandardFormatter{
|
|
startTime: time.Now(),
|
|
}
|
|
}
|
|
|
|
// SetStartTime 设置开始时间
|
|
func (f *StandardFormatter) SetStartTime(startTime time.Time) {
|
|
f.startTime = startTime
|
|
}
|
|
|
|
// Format 格式化日志条目
|
|
func (f *StandardFormatter) Format(entry *LogEntry) string {
|
|
elapsed := time.Since(f.startTime)
|
|
timeStr := f.formatElapsedTime(elapsed)
|
|
prefix := f.getLevelPrefix(entry.Level)
|
|
|
|
return fmt.Sprintf("[%s] %s %s", timeStr, prefix, entry.Content)
|
|
}
|
|
|
|
// formatElapsedTime 格式化经过的时间
|
|
func (f *StandardFormatter) formatElapsedTime(elapsed time.Duration) string {
|
|
switch {
|
|
case elapsed < MaxMillisecondDisplay:
|
|
// 毫秒显示,不需要小数
|
|
return fmt.Sprintf("%dms", elapsed.Milliseconds())
|
|
case elapsed < MaxSecondDisplay:
|
|
// 秒显示,保留一位小数
|
|
return fmt.Sprintf("%.1fs", elapsed.Seconds())
|
|
case elapsed < MaxMinuteDisplay:
|
|
// 分钟和秒显示
|
|
minutes := int(elapsed.Minutes())
|
|
seconds := int(elapsed.Seconds()) % 60
|
|
return fmt.Sprintf("%dm%ds", minutes, seconds)
|
|
default:
|
|
// 小时、分钟和秒显示
|
|
hours := int(elapsed.Hours())
|
|
minutes := int(elapsed.Minutes()) % 60
|
|
seconds := int(elapsed.Seconds()) % 60
|
|
return fmt.Sprintf("%dh%dm%ds", hours, minutes, seconds)
|
|
}
|
|
}
|
|
|
|
// getLevelPrefix 获取日志级别前缀
|
|
func (f *StandardFormatter) getLevelPrefix(level LogLevel) string {
|
|
switch level {
|
|
case LevelSuccess:
|
|
return PrefixSuccess
|
|
case LevelInfo:
|
|
return PrefixInfo
|
|
case LevelError:
|
|
return PrefixError
|
|
default:
|
|
return PrefixDefault
|
|
}
|
|
}
|
|
|
|
// =============================================================================================
|
|
// 已删除的死代码(未使用):
|
|
// DetailedFormatter 及其 Format() 方法
|
|
// JSONFormatter 及其 SetStartTime() 和 Format() 方法
|
|
// =============================================================================================
|