Skip to content

Commit 0020031

Browse files
akaromlfbricon
authored andcommitted
Rotate client log file daily
Signed-off-by: Rome Li <rome.li@microsoft.com>
1 parent b811c79 commit 0020031

4 files changed

Lines changed: 95 additions & 6 deletions

File tree

package-lock.json

Lines changed: 72 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -537,6 +537,7 @@
537537
"path-exists": "^3.0.0",
538538
"expand-home-dir": "^0.0.3",
539539
"glob": "^7.1.3",
540-
"winston": "^3.2.1"
540+
"winston": "^3.2.1",
541+
"winston-daily-rotate-file": "^3.10.0"
541542
}
542543
}

src/extension.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import * as net from 'net';
2121
import { getJavaConfiguration } from './utils';
2222
import { onConfigurationChange, excludeProjectSettingsFiles } from './settings';
2323
import { logger, initializeLogFile } from './log';
24+
import glob = require('glob');
2425

2526
let lastStatus;
2627
let languageClient: LanguageClient;
@@ -497,8 +498,21 @@ function openServerLogFile(workspacePath): Thenable<boolean> {
497498
return openLogFile(serverLogFile, 'Could not open Java Language Server log file');
498499
}
499500

500-
function openClientLogFile(logFile): Thenable<boolean> {
501-
return openLogFile(logFile, 'Could not open Java extension log file');
501+
function openClientLogFile(logFile: string): Thenable<boolean> {
502+
return new Promise((resolve) => {
503+
const filename = path.basename(logFile);
504+
const dirname = path.dirname(logFile);
505+
506+
// find out the newest one
507+
glob(filename + '.*', { cwd: dirname }, (err, files) => {
508+
if (!err && files.length > 0) {
509+
files.sort();
510+
logFile = path.join(dirname, files[files.length - 1]);
511+
}
512+
513+
openLogFile(logFile, 'Could not open Java extension log file').then((result) => resolve(result));
514+
});
515+
});
502516
}
503517

504518

src/log.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import { createLogger, format, transports } from 'winston';
2+
import * as DailyRotateFile from 'winston-daily-rotate-file';
23

34
export function initializeLogFile(filename: string) {
4-
logger.add(new transports.File({
5+
logger.add(new DailyRotateFile({
56
filename: filename,
6-
maxsize: 100 * 1024, // 100k max size per file
7-
maxFiles: 2 // the last 100k of logs are always available
7+
datePattern: 'YYYY-MM-DD',
8+
maxSize: '100k', // 100k max size per file
9+
maxFiles: '2d' // retain logs of the last two days
810
}));
911
}
1012

0 commit comments

Comments
 (0)