added logger
This commit is contained in:
40
src/framework/logger/logger.ts
Normal file
40
src/framework/logger/logger.ts
Normal file
@ -0,0 +1,40 @@
|
||||
import winston, { format, transports, transport as Transport, Logger } from "winston";
|
||||
import { Format } from "logform";
|
||||
|
||||
const { combine, timestamp, label, printf, errors, splat } = format;
|
||||
|
||||
// Custom logging format
|
||||
const customFormat = printf(({ level, message, label, timestamp, stack }) => {
|
||||
return `${timestamp} [${label || "-"}] ${level}: ${message} ${stack || ""}`;
|
||||
});
|
||||
|
||||
// Custom combined logging format:
|
||||
const customCombinedFormat = (module: string): Format =>
|
||||
combine(
|
||||
errors({ stack: true }),
|
||||
format.colorize({ level: true }),
|
||||
label({ label: module }),
|
||||
timestamp(),
|
||||
splat(),
|
||||
customFormat
|
||||
);
|
||||
|
||||
// Custom transports:
|
||||
const customTransports = (): Transport[] => [new transports.Console()];
|
||||
|
||||
// Container to provide different pre-configured loggers
|
||||
const logContainer = new winston.Container();
|
||||
|
||||
// Default logger for modules:
|
||||
const getLogger = (module: string): Logger => {
|
||||
if (!logContainer.has(module)) {
|
||||
logContainer.add(module, {
|
||||
format: customCombinedFormat(module),
|
||||
transports: customTransports()
|
||||
});
|
||||
}
|
||||
return logContainer.get(module);
|
||||
};
|
||||
|
||||
export default getLogger;
|
||||
export const defaultLogger = getLogger("default");
|
||||
Reference in New Issue
Block a user