Skip to content

Commit 805548c

Browse files
Copilotlpcox
andauthored
Restore logger wrappers as funcs and update docs
Agent-Logs-Url: https://github.com/github/gh-aw-mcpg/sessions/85f29738-c288-4e1b-a0a2-7e46c41d094f Co-authored-by: lpcox <15877973+lpcox@users.noreply.github.com>
1 parent 366f107 commit 805548c

4 files changed

Lines changed: 89 additions & 33 deletions

File tree

internal/logger/common.go

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -183,32 +183,40 @@ import (
183183

184184
// Log-Level Quad-Function Pattern
185185
//
186-
// Three sets of four public functions — one set per logger variant — share an identical
187-
// structural pattern where each function is a one-liner that delegates to an internal
188-
// helper with the appropriate LogLevel constant:
186+
// Three sets of four public functions — one set per logger variant — share an
187+
// identical structure where each exported one-liner delegates to an unexported
188+
// per-level closure created by helper constructors in this file:
189189
//
190190
// func Log<Level>(category, format string, args ...interface{}) {
191-
// <internalHelper>(LogLevel<Level>, category, format, args...)
191+
// log<level>(category, format, args...)
192192
// }
193193
//
194-
// The three sets and their internal helpers are:
194+
// The three sets and their internal dispatch helpers are:
195195
//
196196
// file_logger.go LogInfo / LogWarn / LogError / LogDebug → logWithLevel
197197
// markdown_logger.go LogInfoMd / LogWarnMd / LogErrorMd / LogDebugMd → logWithMarkdown
198198
// server_file_logger.go LogInfoWithServer / ... / LogDebugWithServer → logWithLevelAndServer
199199
//
200-
// This pattern is intentionally kept across the three files because:
200+
// This pattern keeps exported APIs immutable (`func` declarations) while still
201+
// eliminating repeated inline level wiring.
202+
//
203+
// The makeLevelLogger and makeServerLevelLogger helpers are for internal
204+
// delegation only and should not replace exported functions with reassignable
205+
// function variables.
206+
//
207+
// This remains intentionally consistent across the three files because:
201208
// - Each set is a distinct public API with a different signature and set of callers.
202-
// - The one-liner wrappers are trivial and unlikely to diverge.
203-
// - Go lacks the metaprogramming to eliminate them without sacrificing readability.
209+
// - The exported wrappers preserve a stable, non-mutable API surface.
210+
// - Internal closure generation removes repetitive level-binding boilerplate.
204211
//
205212
// The shared logFuncs map below centralises the LogLevel → log-function
206213
// mapping so that the internal helpers (logWithMarkdown, logWithLevelAndServer)
207214
// do not need their own switch-on-level blocks.
208215
//
209216
// When adding a new LogLevel constant (e.g., LogLevelTrace):
210217
// 1. Add a new entry to the logFuncs map below.
211-
// 2. Add a new LogTrace wrapper to each of the three files above.
218+
// 2. Add a new internal per-level closure and exported wrapper in each of the
219+
// three files above.
212220
//
213221
// logFuncs maps each LogLevel to its corresponding global log function.
214222
// This eliminates repeated switch-on-level blocks in logWithMarkdown

internal/logger/file_logger.go

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -114,16 +114,32 @@ func logWithLevel(level LogLevel, category, format string, args ...interface{})
114114
}
115115

116116
var (
117-
// LogInfo logs an informational message.
118-
LogInfo = makeLevelLogger(logWithLevel, LogLevelInfo)
119-
// LogWarn logs a warning message.
120-
LogWarn = makeLevelLogger(logWithLevel, LogLevelWarn)
121-
// LogError logs an error message.
122-
LogError = makeLevelLogger(logWithLevel, LogLevelError)
123-
// LogDebug logs a debug message.
124-
LogDebug = makeLevelLogger(logWithLevel, LogLevelDebug)
117+
logInfo = makeLevelLogger(logWithLevel, LogLevelInfo)
118+
logWarn = makeLevelLogger(logWithLevel, LogLevelWarn)
119+
logError = makeLevelLogger(logWithLevel, LogLevelError)
120+
logDebug = makeLevelLogger(logWithLevel, LogLevelDebug)
125121
)
126122

123+
// LogInfo logs an informational message.
124+
func LogInfo(category, format string, args ...interface{}) {
125+
logInfo(category, format, args...)
126+
}
127+
128+
// LogWarn logs a warning message.
129+
func LogWarn(category, format string, args ...interface{}) {
130+
logWarn(category, format, args...)
131+
}
132+
133+
// LogError logs an error message.
134+
func LogError(category, format string, args ...interface{}) {
135+
logError(category, format, args...)
136+
}
137+
138+
// LogDebug logs a debug message.
139+
func LogDebug(category, format string, args ...interface{}) {
140+
logDebug(category, format, args...)
141+
}
142+
127143
// CloseGlobalLogger closes the global file logger
128144
func CloseGlobalLogger() error {
129145
return closeGlobalLogger(&globalLoggerMu, &globalFileLogger)

internal/logger/markdown_logger.go

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -181,16 +181,32 @@ func logWithMarkdown(level LogLevel, category, format string, args ...interface{
181181
}
182182

183183
var (
184-
// LogInfoMd logs to both regular and markdown loggers.
185-
LogInfoMd = makeLevelLogger(logWithMarkdown, LogLevelInfo)
186-
// LogWarnMd logs to both regular and markdown loggers.
187-
LogWarnMd = makeLevelLogger(logWithMarkdown, LogLevelWarn)
188-
// LogErrorMd logs to both regular and markdown loggers.
189-
LogErrorMd = makeLevelLogger(logWithMarkdown, LogLevelError)
190-
// LogDebugMd logs to both regular and markdown loggers.
191-
LogDebugMd = makeLevelLogger(logWithMarkdown, LogLevelDebug)
184+
logInfoMd = makeLevelLogger(logWithMarkdown, LogLevelInfo)
185+
logWarnMd = makeLevelLogger(logWithMarkdown, LogLevelWarn)
186+
logErrorMd = makeLevelLogger(logWithMarkdown, LogLevelError)
187+
logDebugMd = makeLevelLogger(logWithMarkdown, LogLevelDebug)
192188
)
193189

190+
// LogInfoMd logs to both regular and markdown loggers.
191+
func LogInfoMd(category, format string, args ...interface{}) {
192+
logInfoMd(category, format, args...)
193+
}
194+
195+
// LogWarnMd logs to both regular and markdown loggers.
196+
func LogWarnMd(category, format string, args ...interface{}) {
197+
logWarnMd(category, format, args...)
198+
}
199+
200+
// LogErrorMd logs to both regular and markdown loggers.
201+
func LogErrorMd(category, format string, args ...interface{}) {
202+
logErrorMd(category, format, args...)
203+
}
204+
205+
// LogDebugMd logs to both regular and markdown loggers.
206+
func LogDebugMd(category, format string, args ...interface{}) {
207+
logDebugMd(category, format, args...)
208+
}
209+
194210
// CloseMarkdownLogger closes the global markdown logger
195211
func CloseMarkdownLogger() error {
196212
return closeGlobalLogger(&globalMarkdownMu, &globalMarkdownLogger)

internal/logger/server_file_logger.go

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -156,16 +156,32 @@ func logWithLevelAndServer(serverID string, level LogLevel, category, format str
156156
}
157157

158158
var (
159-
// LogInfoWithServer logs an informational message to the server-specific log file.
160-
LogInfoWithServer = makeServerLevelLogger(logWithLevelAndServer, LogLevelInfo)
161-
// LogWarnWithServer logs a warning message to the server-specific log file.
162-
LogWarnWithServer = makeServerLevelLogger(logWithLevelAndServer, LogLevelWarn)
163-
// LogErrorWithServer logs an error message to the server-specific log file.
164-
LogErrorWithServer = makeServerLevelLogger(logWithLevelAndServer, LogLevelError)
165-
// LogDebugWithServer logs a debug message to the server-specific log file.
166-
LogDebugWithServer = makeServerLevelLogger(logWithLevelAndServer, LogLevelDebug)
159+
logInfoWithServer = makeServerLevelLogger(logWithLevelAndServer, LogLevelInfo)
160+
logWarnWithServer = makeServerLevelLogger(logWithLevelAndServer, LogLevelWarn)
161+
logErrorWithServer = makeServerLevelLogger(logWithLevelAndServer, LogLevelError)
162+
logDebugWithServer = makeServerLevelLogger(logWithLevelAndServer, LogLevelDebug)
167163
)
168164

165+
// LogInfoWithServer logs an informational message to the server-specific log file.
166+
func LogInfoWithServer(serverID, category, format string, args ...interface{}) {
167+
logInfoWithServer(serverID, category, format, args...)
168+
}
169+
170+
// LogWarnWithServer logs a warning message to the server-specific log file.
171+
func LogWarnWithServer(serverID, category, format string, args ...interface{}) {
172+
logWarnWithServer(serverID, category, format, args...)
173+
}
174+
175+
// LogErrorWithServer logs an error message to the server-specific log file.
176+
func LogErrorWithServer(serverID, category, format string, args ...interface{}) {
177+
logErrorWithServer(serverID, category, format, args...)
178+
}
179+
180+
// LogDebugWithServer logs a debug message to the server-specific log file.
181+
func LogDebugWithServer(serverID, category, format string, args ...interface{}) {
182+
logDebugWithServer(serverID, category, format, args...)
183+
}
184+
169185
// CloseServerFileLogger closes the global server file logger
170186
func CloseServerFileLogger() error {
171187
return closeGlobalLogger(&globalServerLoggerMu, &globalServerFileLogger)

0 commit comments

Comments
 (0)