in src/main.ts [220:277]
function _configureLog4js(verbosity: number) {
const stderrColor = !!process.stderr.isTTY;
const stdoutColor = !!process.stdout.isTTY;
log4js.addLayout('passThroughNoColor', () => {
return (loggingEvent) => utils.stripAnsi(util.format(...loggingEvent.data));
});
log4js.configure({
appenders: {
console: {
type: 'stderr',
layout: { type: stderrColor ? 'colored' : 'basic' },
},
[utils.DIAGNOSTICS]: {
type: 'stdout',
layout: {
type: stdoutColor ? 'messagePassThrough' : ('passThroughNoColor' as any),
},
},
[utils.CLI_LOGGER]: {
type: 'stderr',
layout: {
type: 'pattern',
pattern: stdoutColor ? '%[[%p]%] %m' : '[%p] %m',
},
},
},
categories: {
default: { appenders: ['console'], level: _logLevel() },
[utils.CLI_LOGGER]: {
appenders: [utils.CLI_LOGGER],
level: _logLevel(),
},
// The diagnostics logger must be set to INFO or more verbose, or watch won't show important messages
[utils.DIAGNOSTICS]: {
appenders: [utils.DIAGNOSTICS],
level: _logLevel(Math.max(verbosity, 1)),
},
},
});
function _logLevel(verbosityLevel = verbosity): keyof log4js.Levels {
switch (verbosityLevel) {
case 0:
return 'WARN';
case 1:
return 'INFO';
case 2:
return 'DEBUG';
case 3:
return 'TRACE';
default:
return 'ALL';
}
}
}