@@ -3,7 +3,7 @@ import { Session } from "./common/session.js";
33import { Transport } from "@modelcontextprotocol/sdk/shared/transport.js" ;
44import { AtlasTools } from "./tools/atlas/tools.js" ;
55import { MongoDbTools } from "./tools/mongodb/tools.js" ;
6- import logger , { LogId } from "./common/logger.js" ;
6+ import logger , { LogId , LoggerBase , McpLogger , DiskLogger , ConsoleLogger } from "./common/logger.js" ;
77import { ObjectId } from "mongodb" ;
88import { Telemetry } from "./telemetry/telemetry.js" ;
99import { UserConfig } from "./common/config.js" ;
@@ -67,6 +67,18 @@ export class Server {
6767 return existingHandler ( request , extra ) ;
6868 } ) ;
6969
70+ const loggers : LoggerBase [ ] = [ ] ;
71+ if ( this . userConfig . loggers . includes ( "mcp" ) ) {
72+ loggers . push ( new McpLogger ( this . mcpServer ) ) ;
73+ }
74+ if ( this . userConfig . loggers . includes ( "disk" ) ) {
75+ loggers . push ( await DiskLogger . fromPath ( this . userConfig . logPath ) ) ;
76+ }
77+ if ( this . userConfig . loggers . includes ( "stderr" ) ) {
78+ loggers . push ( new ConsoleLogger ( ) ) ;
79+ }
80+ logger . setLoggers ( ...loggers ) ;
81+
7082 this . mcpServer . server . oninitialized = ( ) => {
7183 this . session . setAgentRunner ( this . mcpServer . server . getClientVersion ( ) ) ;
7284 this . session . sessionId = new ObjectId ( ) . toString ( ) ;
@@ -189,6 +201,21 @@ export class Server {
189201 throw new Error ( `Invalid httpPort: ${ this . userConfig . httpPort } ` ) ;
190202 }
191203
204+ if ( this . userConfig . loggers . length === 0 ) {
205+ throw new Error ( "No loggers found in config" ) ;
206+ }
207+
208+ const loggerTypes = new Set ( this . userConfig . loggers ) ;
209+ if ( loggerTypes . size !== this . userConfig . loggers . length ) {
210+ throw new Error ( "Duplicate loggers found in config" ) ;
211+ }
212+
213+ for ( const loggerType of this . userConfig . loggers ) {
214+ if ( loggerType !== "mcp" && loggerType !== "disk" && loggerType !== "stderr" ) {
215+ throw new Error ( `Invalid logger: ${ loggerType } ` ) ;
216+ }
217+ }
218+
192219 if ( this . userConfig . connectionString ) {
193220 try {
194221 await this . session . connectToMongoDB ( this . userConfig . connectionString , this . userConfig . connectOptions ) ;
0 commit comments