diff --git a/src/lib/cli.ts b/src/lib/cli.ts index 33bb8a402..bd66f0db4 100644 --- a/src/lib/cli.ts +++ b/src/lib/cli.ts @@ -29,7 +29,7 @@ if (semver.satisfies(process.version, `>=${MIN_NODE_VERSION}`) === false) { process.title = 'verdaccio'; const logger = require('./logger'); -logger.setup(); // default setup +logger.setup(null, {logStart: false}); // default setup const envinfo = require('envinfo'); const commander = require('commander'); diff --git a/src/lib/logger.ts b/src/lib/logger.ts index 6a568591e..15c40e72f 100644 --- a/src/lib/logger.ts +++ b/src/lib/logger.ts @@ -20,6 +20,11 @@ class VerdaccioRotatingFileStream extends Logger.RotatingFileStream { write(obj) { super.write(jsonFormat(obj, false)); } + + rotate(): void { + super.rotate(); + this.emit('rotated'); + } } let logger; @@ -38,7 +43,7 @@ const DEFAULT_LOGGER_CONF = [{ type: 'stdout', format: 'pretty', level: 'http' } * Setup the Buyan logger * @param {*} logs list of log configuration */ -function setup(logs) { +function setup(logs, { logStart } = { logStart: true }) { const streams: any = []; if (logs == null) { logs = DEFAULT_LOGGER_CONF; @@ -79,6 +84,10 @@ function setup(logs) { stream, }; + if (logStart) { + stream.on('rotated', () => logger.warn('Start of logfile')); + } + streams.push(rotateStream); } else { const stream = new Stream(); @@ -137,6 +146,12 @@ function setup(logs) { }, }); + // In case of an empty log file, we ensure there is always something logged. This also helps see if the server + // was restarted in any cases + if (logStart) { + logger.warn('Verdaccio started'); + } + process.on('SIGUSR2', function() { Logger.reopenFileStreams(); });