Conversation
mengzhuo
left a comment
There was a problem hiding this comment.
Also you should update go.mod if zerolog is explicity required.
done. |
Code reviewFound 2 issues:
Lines 67 to 83 in 4a8a3ae
Lines 84 to 88 in 4a8a3ae Suggested fix: Store the file handle in a global variable (e.g., var (
logger zerolog.Logger
fileLogger zerolog.Logger
logFile *os.File // Add this
// ...
)
func EnableFileLogging(filePath string) error {
mu.Lock()
defer mu.Unlock()
if err := os.MkdirAll(filepath.Dir(filePath), 0o755); err != nil {
return fmt.Errorf("failed to create log directory: %w", err)
}
newFile, err := os.OpenFile(filePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0o644)
if err != nil {
return fmt.Errorf("failed to open log file: %w", err)
}
// Close old file if exists
if logFile != nil {
logFile.Close()
}
logFile = newFile
fileLogger = zerolog.New(logFile).With().Timestamp().Caller().Logger()
return nil
}
func DisableFileLogging() {
mu.Lock()
defer mu.Unlock()
if logFile != nil {
logFile.Close()
logFile = nil
}
fileLogger = zerolog.Logger{}
}🤖 Generated with Claude Code - If this code review was useful, please react with 👍. Otherwise, react with 👎. |
done, |
|
@yinwm Could you take a look? |
Code ReviewFound 4 issues that should be addressed before merging: 1. FATAL level uses wrong zerolog method At pkg/logger/logger.go#L119-L120: case zerolog.FatalLevel:
event = logger.Error() // Should use logger.Fatal()Then manually calling 2. DRY violation - duplicate switch-case The level-to-event switch logic is duplicated for console logger and file logger in 3. API inconsistency Only 4. TODO comment should not be merged TimeFormat: "15:04:05", // TODO: make it configurable???The three question marks indicate uncertainty. Either implement the configuration or remove the TODO entirely. Don't merge unresolved TODOs. Good aspects
🤖 Generated with Claude Code - If this code review was useful, please react with 👍. Otherwise, react with 👎. |
1/2 fixed. 3 it's for 3rd party logger usage, no need to fix. 4 it's a feature need negotiate later, so make it TODO, please check the previous review comment. |
* refactor logger to zerolog * modify dingtalk and discord logger * fix for lint * fix for review * fix for file leak * fix for review
* refactor logger to zerolog * modify dingtalk and discord logger * fix for lint * fix for review * fix for file leak * fix for review
This merge brings in upstream changes including: - zerolog logger refactoring (sipeed#1239) - Anthropic Messages API support (sipeed#1284) - Global WebSocket for Pico chat (sipeed#1507) - ModelScope and LongCat providers (sipeed#1317, sipeed#1486) - Web gateway hot reload and polling (sipeed#1684) - Credential encryption with AES-GCM (sipeed#1521) - Cross-platform systray UI (sipeed#1649) - Security fixes for LINE webhooks, identity allowlist - And many more improvements Conflict resolved: - pkg/agent/instance.go: merged buildAllowReadPatterns/mediaTempDirPattern functions from upstream while preserving A2A registry Close() handling Custom features preserved: - A2A channel (Agent-to-Agent protocol) - Krabot channel - Enhanced Docker multi-channel support
* refactor logger to zerolog * modify dingtalk and discord logger * fix for lint * fix for review * fix for file leak * fix for review
📝 Description
refactor logger to zerolog.
🗣️ Type of Change
🤖 AI Code Generation
🔗 Related Issue
📚 Technical Context (Skip for Docs)
🧪 Test Environment
📸 Evidence (Optional)
Click to view Logs/Screenshots
☑️ Checklist