11import type { MockInstance } from "vitest" ;
22import { describe , beforeEach , afterEach , vi , it , expect } from "vitest" ;
3- import type { LoggerType } from "../../src/common/logger.js" ;
3+ import type { LoggerType , LogLevel } from "../../src/common/logger.js" ;
44import { CompositeLogger , ConsoleLogger , DiskLogger , LogId , McpLogger } from "../../src/common/logger.js" ;
5- import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js" ;
65import os from "os" ;
76import * as path from "path" ;
87import * as fs from "fs/promises" ;
98import { once } from "events" ;
9+ import type { Server } from "../../src/server.js" ;
1010
1111describe ( "Logger" , ( ) => {
1212 let consoleErrorSpy : MockInstance < typeof console . error > ;
1313 let consoleLogger : ConsoleLogger ;
1414
1515 let mcpLoggerSpy : MockInstance ;
1616 let mcpLogger : McpLogger ;
17+ let minimumMcpLogLevel : LogLevel ;
1718
1819 beforeEach ( ( ) => {
1920 // Mock console.error before creating the ConsoleLogger
@@ -22,12 +23,18 @@ describe("Logger", () => {
2223 consoleLogger = new ConsoleLogger ( ) ;
2324
2425 mcpLoggerSpy = vi . fn ( ) ;
26+ minimumMcpLogLevel = "debug" ;
2527 mcpLogger = new McpLogger ( {
26- server : {
27- sendLoggingMessage : mcpLoggerSpy ,
28+ mcpServer : {
29+ server : {
30+ sendLoggingMessage : mcpLoggerSpy ,
31+ } ,
32+ isConnected : ( ) => true ,
2833 } ,
29- isConnected : ( ) => true ,
30- } as unknown as McpServer ) ;
34+ get mcpLogLevel ( ) {
35+ return minimumMcpLogLevel ;
36+ } ,
37+ } as unknown as Server ) ;
3138 } ) ;
3239
3340 afterEach ( ( ) => {
@@ -306,4 +313,24 @@ describe("Logger", () => {
306313 } ) ;
307314 } ) ;
308315 } ) ;
316+
317+ describe ( "mcp logger" , ( ) => {
318+ it ( "filters out messages below the minimum log level" , ( ) => {
319+ minimumMcpLogLevel = "debug" ;
320+ mcpLogger . log ( "debug" , { id : LogId . serverInitialized , context : "test" , message : "Debug message" } ) ;
321+
322+ expect ( mcpLoggerSpy ) . toHaveBeenCalledOnce ( ) ;
323+ expect ( getLastMcpLogMessage ( ) ) . toContain ( "Debug message" ) ;
324+
325+ minimumMcpLogLevel = "info" ;
326+ mcpLogger . log ( "debug" , { id : LogId . serverInitialized , context : "test" , message : "Debug message 2" } ) ;
327+
328+ expect ( mcpLoggerSpy ) . toHaveBeenCalledTimes ( 1 ) ;
329+
330+ mcpLogger . log ( "alert" , { id : LogId . serverInitialized , context : "test" , message : "Alert message" } ) ;
331+
332+ expect ( mcpLoggerSpy ) . toHaveBeenCalledTimes ( 2 ) ;
333+ expect ( getLastMcpLogMessage ( ) ) . toContain ( "Alert message" ) ;
334+ } ) ;
335+ } ) ;
309336} ) ;
0 commit comments