backport
Version:
A CLI tool that automates the process of backporting commits
55 lines • 1.81 kB
JavaScript
import winston, { format } from 'winston';
import { getLogfilePath } from './env.js';
export let logger = winston.createLogger({
transports: [
fileTransport({ logLevel: 'info' }),
fileTransport({ logLevel: 'debug' }),
],
});
let _githubToken;
let _interactive;
export function initLogger({ interactive, githubToken, logFilePath, }) {
_githubToken = githubToken;
_interactive = interactive;
logger = winston.createLogger({
format: format.combine(format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
// Format the metadata object
format.metadata({
fillExcept: ['message', 'level', 'timestamp', 'label'],
})),
transports: logFilePath
? [fileTransport({ logLevel: 'debug', logFilePath })]
: [
fileTransport({ logLevel: 'info' }),
fileTransport({ logLevel: 'debug' }),
],
});
return logger;
}
function fileTransport({ logFilePath, logLevel, }) {
return new winston.transports.File({
filename: getLogfilePath({ logFilePath, logLevel }),
level: logLevel,
format: format.json({ replacer: githubTokenReplacer }),
});
}
// wrapper around console.log
export function consoleLog(message) {
if (_interactive) {
console.log(redactGithubToken(message));
}
}
export function setGithubToken(githubToken) {
_githubToken = githubToken;
}
export function redactGithubToken(str) {
// `redactGithubToken` might be called before github token is set
if (_githubToken) {
return str.replaceAll(_githubToken, '<REDACTED>');
}
return str;
}
export function githubTokenReplacer(key, value) {
return typeof value === 'string' ? redactGithubToken(value) : value;
}
//# sourceMappingURL=logger.js.map