Skip to content

Commit 6a105ea

Browse files
committed
MCP-216 Log to STDERR
1 parent 8e31838 commit 6a105ea

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

src/main/java/org/sonarsource/sonarqube/mcp/log/McpLogger.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,13 @@
1919
import org.slf4j.Logger;
2020
import org.slf4j.LoggerFactory;
2121

22+
/**
23+
* MCP-specific logger that outputs to both:
24+
* - STDERR: for MCP clients (the MCP protocol uses STDERR for diagnostic logs, STDOUT is reserved for JSON-RPC messages)
25+
* - Log file: via SLF4J/Logback for persistence and debugging
26+
*/
2227
public class McpLogger {
28+
2329
private static final Logger LOG = LoggerFactory.getLogger(McpLogger.class);
2430
private static final McpLogger INSTANCE = new McpLogger();
2531

@@ -29,13 +35,22 @@ public static McpLogger getInstance() {
2935

3036
public void info(String message) {
3137
LOG.info(message);
38+
logToStderr("INFO", message);
3239
}
3340

3441
public void warn(String message) {
3542
LOG.warn(message);
43+
logToStderr("WARN", message);
3644
}
3745

3846
public void error(String message, Throwable throwable) {
3947
LOG.error(message, throwable);
48+
logToStderr("ERROR", message);
49+
throwable.printStackTrace(System.err);
4050
}
51+
52+
private static void logToStderr(String level, String message) {
53+
System.err.println(level + " SonarQube MCP Server - " + message);
54+
}
55+
4156
}

0 commit comments

Comments
 (0)