MCPcopy
hub / github.com/simstudioai/sim / Logger

Class Logger

packages/logger/src/index.ts:147–350  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

145 * and handles formatting, colorization, and environment-specific behavior.
146 */
147export class Logger {
148 private module: string
149 private config: ReturnType<typeof getLogConfig>
150 private isDev: boolean
151 private metadata: LoggerMetadata = {}
152
153 /**
154 * Create a new logger for a specific module
155 * @param module The name of the module (e.g., 'OpenAIProvider', 'AgentBlockHandler')
156 * @param overrideConfig Optional configuration overrides
157 */
158 constructor(module: string, overrideConfig?: LoggerConfig) {
159 this.module = module
160 this.config = getLogConfig()
161 this.isDev = getNodeEnv() === 'development'
162
163 // Apply overrides if provided
164 if (overrideConfig) {
165 if (overrideConfig.logLevel !== undefined) {
166 const level =
167 typeof overrideConfig.logLevel === 'string'
168 ? (overrideConfig.logLevel as LogLevel)
169 : overrideConfig.logLevel
170 if (Object.values(LogLevel).includes(level)) {
171 this.config.minLevel = level
172 }
173 }
174 if (overrideConfig.colorize !== undefined) {
175 this.config.colorize = overrideConfig.colorize
176 }
177 if (overrideConfig.enabled !== undefined) {
178 this.config.enabled = overrideConfig.enabled
179 }
180 }
181 }
182
183 /**
184 * Creates a child logger with additional metadata merged in.
185 * The child inherits this logger's module name, config, and existing metadata.
186 * New metadata keys override existing ones with the same name.
187 */
188 withMetadata(metadata: LoggerMetadata): Logger {
189 const child = Object.create(Logger.prototype) as Logger
190 child.module = this.module
191 child.config = this.config
192 child.isDev = this.isDev
193 child.metadata = { ...this.metadata, ...metadata }
194 return child
195 }
196
197 /**
198 * Determines if a log at the given level should be displayed
199 */
200 private shouldLog(level: LogLevel): boolean {
201 if (!this.config.enabled) return false
202
203 if (getNodeEnv() === 'production' && typeof window !== 'undefined') {
204 return false

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected