@@ -11,6 +11,7 @@ interface LoggerOptions {
1111 level ?: LogLevel
1212 console ?: boolean
1313 file ?: string
14+ format ?: 'minimal' | 'detailed' | 'emoji'
1415}
1516
1617const DEFAULT_LOGGER_NAME = 'mcp-use'
@@ -26,12 +27,21 @@ function resolveLevel(env: string | undefined): LogLevel {
2627 }
2728}
2829
29- const defaultFormatter = printf ( ( { level, message, label, timestamp } ) => {
30+ const minimalFormatter = printf ( ( { level, message, label, timestamp } ) => {
31+ return `${ timestamp } [${ label } ] ${ level } : ${ message } `
32+ } )
33+
34+ const detailedFormatter = printf ( ( { level, message, label, timestamp } ) => {
35+ return `${ timestamp } [${ label } ] ${ level . toUpperCase ( ) } : ${ message } `
36+ } )
37+
38+ const emojiFormatter = printf ( ( { level, message, label, timestamp } ) => {
3039 return `${ timestamp } [${ label } ] ${ level . toUpperCase ( ) } : ${ message } `
3140} )
3241
3342export class Logger {
3443 private static instances : Record < string , WinstonLogger > = { }
44+ private static currentFormat : 'minimal' | 'detailed' | 'emoji' = 'minimal'
3545
3646 public static get ( name : string = DEFAULT_LOGGER_NAME ) : WinstonLogger {
3747 if ( ! this . instances [ name ] ) {
@@ -41,8 +51,8 @@ export class Logger {
4151 colorize ( ) ,
4252 splat ( ) ,
4353 label ( { label : name } ) ,
44- timestamp ( ) ,
45- defaultFormatter ,
54+ timestamp ( { format : 'HH:mm:ss' } ) ,
55+ this . getFormatter ( ) ,
4656 ) ,
4757 transports : [ ] ,
4858 } )
@@ -51,10 +61,24 @@ export class Logger {
5161 return this . instances [ name ]
5262 }
5363
64+ private static getFormatter ( ) {
65+ switch ( this . currentFormat ) {
66+ case 'minimal' :
67+ return minimalFormatter
68+ case 'detailed' :
69+ return detailedFormatter
70+ case 'emoji' :
71+ return emojiFormatter
72+ default :
73+ return minimalFormatter
74+ }
75+ }
76+
5477 public static configure ( options : LoggerOptions = { } ) : void {
55- const { level, console = true , file } = options
78+ const { level, console = true , file, format = 'minimal' } = options
5679 const resolvedLevel = level ?? resolveLevel ( process . env . DEBUG )
5780
81+ this . currentFormat = format
5882 const root = this . get ( )
5983
6084 root . level = resolvedLevel
@@ -72,6 +96,18 @@ export class Logger {
7296 }
7397 root . add ( new transports . File ( { filename : file } ) )
7498 }
99+
100+ // Update all existing loggers with new format
101+ Object . values ( this . instances ) . forEach ( ( logger ) => {
102+ logger . level = resolvedLevel
103+ logger . format = combine (
104+ colorize ( ) ,
105+ splat ( ) ,
106+ label ( { label : DEFAULT_LOGGER_NAME } ) ,
107+ timestamp ( { format : 'HH:mm:ss' } ) ,
108+ this . getFormatter ( ) ,
109+ )
110+ } )
75111 }
76112
77113 public static setDebug ( enabled : boolean | 0 | 1 | 2 ) : void {
@@ -87,6 +123,11 @@ export class Logger {
87123 } )
88124 process . env . DEBUG = enabled ? ( enabled === true ? '2' : String ( enabled ) ) : '0'
89125 }
126+
127+ public static setFormat ( format : 'minimal' | 'detailed' | 'emoji' ) : void {
128+ this . currentFormat = format
129+ this . configure ( { format } )
130+ }
90131}
91132
92133Logger . configure ( )
0 commit comments