Merge pull request #741 from cliffhall/stderr-handling
Handling of stderr on STDIO servers
This commit is contained in:
commit
f22aa1f5e2
1 changed files with 50 additions and 77 deletions
|
|
@ -401,24 +401,66 @@ app.get(
|
|||
|
||||
(serverTransport as StdioClientTransport).stderr!.on("data", (chunk) => {
|
||||
if (chunk.toString().includes("MODULE_NOT_FOUND")) {
|
||||
// Server command not found, remove transports
|
||||
const message = "Command not found, transports removed";
|
||||
webAppTransport.send({
|
||||
jsonrpc: "2.0",
|
||||
method: "notifications/stderr",
|
||||
method: "notifications/message",
|
||||
params: {
|
||||
content: "Command not found, transports removed",
|
||||
level: "emergency",
|
||||
logger: "proxy",
|
||||
data: {
|
||||
message,
|
||||
},
|
||||
},
|
||||
});
|
||||
webAppTransport.close();
|
||||
serverTransport.close();
|
||||
webAppTransports.delete(webAppTransport.sessionId);
|
||||
serverTransports.delete(webAppTransport.sessionId);
|
||||
console.error("Command not found, transports removed");
|
||||
console.error(message);
|
||||
} else {
|
||||
// Inspect message and attempt to assign a RFC 5424 Syslog Protocol level
|
||||
let level;
|
||||
let message = chunk.toString().trim();
|
||||
let ucMsg = chunk.toString().toUpperCase();
|
||||
if (ucMsg.includes("DEBUG")) {
|
||||
level = "debug";
|
||||
} else if (ucMsg.includes("INFO")) {
|
||||
level = "info";
|
||||
} else if (ucMsg.includes("NOTICE")) {
|
||||
level = "notice";
|
||||
} else if (ucMsg.includes("WARN")) {
|
||||
level = "warning";
|
||||
} else if (ucMsg.includes("ERROR")) {
|
||||
level = "error";
|
||||
} else if (ucMsg.includes("CRITICAL")) {
|
||||
level = "critical";
|
||||
} else if (ucMsg.includes("ALERT")) {
|
||||
level = "alert";
|
||||
} else if (ucMsg.includes("EMERGENCY")) {
|
||||
level = "emergency";
|
||||
} else if (ucMsg.includes("SIGINT")) {
|
||||
message = "SIGINT received. Server shutdown.";
|
||||
level = "emergency";
|
||||
} else if (ucMsg.includes("SIGHUP")) {
|
||||
message = "SIGHUP received. Server shutdown.";
|
||||
level = "emergency";
|
||||
} else if (ucMsg.includes("SIGTERM")) {
|
||||
message = "SIGTERM received. Server shutdown.";
|
||||
level = "emergency";
|
||||
} else {
|
||||
level = "info";
|
||||
}
|
||||
webAppTransport.send({
|
||||
jsonrpc: "2.0",
|
||||
method: "notifications/stderr",
|
||||
method: "notifications/message",
|
||||
params: {
|
||||
content: chunk.toString(),
|
||||
level,
|
||||
logger: "stdio",
|
||||
data: {
|
||||
message,
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue