Skip to content

Commit 85a9d43

Browse files
committed
feat: improve logs + error messages
before: {"level":"debug","message":"request -> neovim.api.nvim_list_bufs"} {"level":"debug","message":"request -> neovim.api.nvim_command"} {"level":"debug","message":"request -> neovim.api.nvim_get_current_tabpage"} {"level":"debug","message":"response -> neovim.api.nvim_command: null"} {"level":"debug","message":"response -> neovim.api.nvim_get_current_tabpage: [object Object]"} after 2024-03-16 15:01:14 DBG request -> neovim.api.nvim_eval 2024-03-16 15:01:14 DBG request -> neovim.api.nvim_get_current_tabpage 2024-03-16 15:01:15 DBG response -> neovim.api.nvim_get_current_tabpage: [object Object] 2024-03-16 15:01:15 DBG request -> neovim.api.nvim_get_current_tabpage 2024-03-16 15:01:15 DBG request -> neovim.api.nvim_get_current_win
1 parent 9a2cf4c commit 85a9d43

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

packages/neovim/src/api/Base.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,13 +98,15 @@ export class BaseApi extends EventEmitter {
9898
return this[DO_REQUEST](name, args).catch(err => {
9999
const newError = new Error(err.message);
100100
newError.stack = stack;
101-
this.logger.error(`Error making request to ${name}`, newError);
101+
this.logger.error(`failed request to "%s": %s: %s`, name, newError.name, newError.message);
102102
throw newError;
103103
});
104104
}
105105

106106
request(name: string, args: any[] = []): Promise<any> {
107-
const error = new Error(`Error making request to ${name}`);
107+
// Dummy error, to get stacktrace.
108+
const error = new Error(`failed request to "${name}" (see $NVIM_NODE_LOG_FILE for details, if it was set)`);
109+
108110
return this.asyncRequest(name, args, error.stack);
109111
}
110112

packages/neovim/src/utils/logger.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,20 @@ function setupWinstonLogger(): Logger {
1414
new winston.transports.File({
1515
filename: process.env.NVIM_NODE_LOG_FILE,
1616
level,
17+
format: winston.format.combine(
18+
winston.format.splat(),
19+
winston.format.timestamp({
20+
format: 'YYYY-MM-DD HH:mm:ss',
21+
}),
22+
winston.format.errors({ stack: true }),
23+
winston.format.printf(info => {
24+
if (info.raw) {
25+
return info.message
26+
}
27+
const lvl = info.level === 'debug' ? 'DBG' : info.level.slice(0, 3).toUpperCase();
28+
return `${info.timestamp} ${lvl} ${info.message}`
29+
})
30+
),
1731
})
1832
);
1933
}

0 commit comments

Comments
 (0)