Skip to content

Commit d34109e

Browse files
committed
microsoft#80862 Add an option is spdlogger for sync logging
1 parent bfcc5ad commit d34109e

1 file changed

Lines changed: 13 additions & 10 deletions

File tree

src/vs/platform/log/node/spdlogService.ts

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,19 @@ interface ILog {
3030
message: string;
3131
}
3232

33-
function log(logger: spdlog.RotatingLogger, level: LogLevel, message: string): void {
33+
function log(logger: spdlog.RotatingLogger, level: LogLevel, message: string, sync: boolean): void {
3434
switch (level) {
35-
case LogLevel.Trace: return logger.trace(message);
36-
case LogLevel.Debug: return logger.debug(message);
37-
case LogLevel.Info: return logger.info(message);
38-
case LogLevel.Warning: return logger.warn(message);
39-
case LogLevel.Error: return logger.error(message);
40-
case LogLevel.Critical: return logger.critical(message);
35+
case LogLevel.Trace: logger.trace(message); break;
36+
case LogLevel.Debug: logger.debug(message); break;
37+
case LogLevel.Info: logger.info(message); break;
38+
case LogLevel.Warning: logger.warn(message); break;
39+
case LogLevel.Error: logger.error(message); break;
40+
case LogLevel.Critical: logger.critical(message); break;
4141
default: throw new Error('Invalid log level');
4242
}
43+
if (sync) {
44+
logger.flush();
45+
}
4346
}
4447

4548
export class SpdLogService extends AbstractLogService implements ILogService {
@@ -50,7 +53,7 @@ export class SpdLogService extends AbstractLogService implements ILogService {
5053
private _loggerCreationPromise: Promise<void> | undefined = undefined;
5154
private _logger: spdlog.RotatingLogger | undefined;
5255

53-
constructor(private readonly name: string, private readonly logsFolder: string, level: LogLevel) {
56+
constructor(private readonly name: string, private readonly logsFolder: string, level: LogLevel, private readonly sync: boolean = false) {
5457
super();
5558
this.setLevel(level);
5659
this._createSpdLogLogger();
@@ -69,7 +72,7 @@ export class SpdLogService extends AbstractLogService implements ILogService {
6972
this._logger = logger;
7073
this._logger.setLevel(this.getLevel());
7174
for (const { level, message } of this.buffer) {
72-
log(this._logger, level, message);
75+
log(this._logger, level, message, this.sync);
7376
}
7477
this.buffer = [];
7578
}
@@ -80,7 +83,7 @@ export class SpdLogService extends AbstractLogService implements ILogService {
8083

8184
private _log(level: LogLevel, message: string): void {
8285
if (this._logger) {
83-
log(this._logger, level, message);
86+
log(this._logger, level, message, this.sync);
8487
} else if (this.getLevel() <= level) {
8588
this.buffer.push({ level, message });
8689
}

0 commit comments

Comments
 (0)