chamesu
Version:
This package contains all packages of the chat application.
60 lines (51 loc) • 1.26 kB
text/typescript
/*
* Copyright (c) 2022.
* Author Peter Placzek (tada5hi)
* For the full copyright and license information,
* view the LICENSE file that was distributed with this source code.
*/
import {createLogger, transports, format, Logger} from 'winston';
import {getWritableDirPath} from "../../config/paths";
let logger : undefined | any;
/*
Levels
{
error: 0,
warn: 1,
info: 2,
http: 3,
verbose: 4,
debug: 5,
silly: 6
}
*/
const includeNamespaceInMessage = format((info, opts) => {
if(typeof info.meta?.namespace === 'string') {
info.message = `${info.namespace}: ${info.message}`;
}
return info;
});
export function useLogger() : Logger {
if(typeof logger !== 'undefined') {
return logger;
}
logger = createLogger({
format: format.combine(
includeNamespaceInMessage(),
format.colorize(),
format.json(),
format.timestamp()
),
level: 'debug',
transports: [
new transports.Console({
level: 'debug'
}),
new transports.File({
filename: getWritableDirPath() + '/error.log',
level: 'warn',
})
]
})
return logger;
}