feat: 优化日志颜色方案,区分漏洞和普通信息

- 新增 LogVuln 级别(红色),用于漏洞和重要发现
- 密码爆破成功、未授权访问、POC漏洞等改用红色显示
- 普通信息(扫描统计等)改为白色
- Web指纹保持绿色
This commit is contained in:
ZacharyZcR
2026-01-17 13:21:43 +08:00
parent c3bff843a3
commit 5ebdbd3aa2
27 changed files with 68 additions and 52 deletions
+4 -1
View File
@@ -72,8 +72,11 @@ func LogBase(msg string) { getGlobalLogger().Base(msg) }
// LogInfo 输出信息日志
func LogInfo(msg string) { getGlobalLogger().Info(msg) }
// LogSuccess 输出成功日志
// LogSuccess 输出成功日志Web指纹等)
func LogSuccess(result string) { getGlobalLogger().Success(result) }
// LogVuln 输出漏洞/重要发现日志(密码成功、漏洞等)
func LogVuln(result string) { getGlobalLogger().Vuln(result) }
// LogError 输出错误日志
func LogError(errMsg string) { getGlobalLogger().Error(errMsg) }
+10 -6
View File
@@ -25,7 +25,8 @@ const (
LevelError LogLevel = "ERROR" // 仅显示错误日志
LevelBase LogLevel = "BASE" // 仅显示基础信息日志
LevelInfo LogLevel = "INFO" // 仅显示信息日志
LevelSuccess LogLevel = "SUCCESS" // 仅显示成功日志
LevelSuccess LogLevel = "SUCCESS" // 仅显示成功日志Web指纹等)
LevelVuln LogLevel = "VULN" // 漏洞和重要发现(密码成功、漏洞等)
LevelDebug LogLevel = "DEBUG" // 仅显示调试日志
LevelInfoSuccess LogLevel = "INFO_SUCCESS" // 仅显示信息和成功日志
LevelBaseInfoSuccess LogLevel = "BASE_INFO_SUCCESS" // 显示基础、信息和成功日志
@@ -57,6 +58,8 @@ const (
const (
// PrefixSuccess 成功日志前缀
PrefixSuccess = "[+]"
// PrefixVuln 漏洞/重要发现前缀
PrefixVuln = "[!]"
// PrefixInfo 信息日志前缀
PrefixInfo = "[*]"
// PrefixError 错误日志前缀
@@ -87,10 +90,11 @@ const (
// GetDefaultLevelColors 获取默认的日志级别颜色映射
func GetDefaultLevelColors() map[LogLevel]interface{} {
return map[LogLevel]interface{}{
LevelError: color.FgRed, // 错误日志显示红色(危险/错误)
LevelBase: color.FgYellow, // 基础日志显示色(警告/提示
LevelInfo: color.FgCyan, // 信息日志显示色(中性信息)
LevelSuccess: color.FgGreen, // 成功日志显示绿色(成功/通过
LevelDebug: color.FgWhite, // 调试日志显示色(详细信息
LevelError: color.FgRed, // 错误日志显示红色
LevelVuln: color.FgRed, // 漏洞/重要发现显示色(密码成功、漏洞等
LevelBase: color.FgWhite, // 基础日志显示色(普通信息)
LevelInfo: color.FgWhite, // 信息日志显示色(普通信息
LevelSuccess: color.FgGreen, // 成功日志显示绿色(Web指纹等
LevelDebug: color.FgWhite, // 调试日志显示白色
}
}
+12 -3
View File
@@ -95,6 +95,11 @@ func (l *Logger) Success(msg string) {
l.log(LevelSuccess, msg)
}
// Vuln 输出漏洞/重要发现信息
func (l *Logger) Vuln(msg string) {
l.log(LevelVuln, msg)
}
// Error 输出错误信息
func (l *Logger) Error(msg string) {
l.log(LevelError, msg)
@@ -130,6 +135,8 @@ func (l *Logger) shouldLog(level LogLevel) bool {
return true
case LevelError:
return level == LevelError
case LevelVuln:
return level == LevelVuln
case LevelBase:
return level == LevelBase
case LevelInfo:
@@ -139,15 +146,15 @@ func (l *Logger) shouldLog(level LogLevel) bool {
case LevelDebug:
return level == LevelDebug
case LevelInfoSuccess:
return level == LevelInfo || level == LevelSuccess
return level == LevelInfo || level == LevelSuccess || level == LevelVuln
case LevelBaseInfoSuccess:
return level == LevelBase || level == LevelInfo || level == LevelSuccess
return level == LevelBase || level == LevelInfo || level == LevelSuccess || level == LevelVuln
default:
// 向后兼容:字符串"debug"显示所有
if string(l.config.Level) == "debug" {
return true
}
return level == LevelInfo || level == LevelSuccess
return level == LevelInfo || level == LevelSuccess || level == LevelVuln
}
}
@@ -201,6 +208,8 @@ func (l *Logger) formatElapsedTime(elapsed time.Duration) string {
// getLevelPrefix 获取日志级别前缀
func (l *Logger) getLevelPrefix(level LogLevel) string {
switch level {
case LevelVuln:
return PrefixVuln
case LevelSuccess:
return PrefixSuccess
case LevelInfo: