i have declared LogLevel
in enum
, winston is throwing an error. so what should be the type of levels
?
logger.ts
enum LogLevel {
trace,
debug,
info,
warn,
error
}
const logConfig = {
format: _format.json(),
levels: LogLevel,
transports: [
new _transports.Console()
]
const logger = createLogger(logConfig);
error
Argument of type '{ format: Format; levels: typeof LogLevel; level: string; transports: _transports.ConsoleTransportInstance[]; }' is not assignable to parameter of type 'LoggerOptions'.
Types of property 'levels' are incompatible.
Type 'typeof LogLevel' is not assignable to type 'AbstractConfigSetLevels'.
Index signatures are incompatible.
Type 'string' is not assignable to type 'number'.ts(2345)
SOLUTION
Instead of passing enum directly to levels define a const in key-value pair as shown in _logLevel
.
enum LogLevel {
trace,
debug,
info,
warn,
error
}
const _logLevel = {
error: LogLevel.Error,
warn: LogLevel.Warn,
info: LogLevel.Info,
debug: LogLevel.Debug,
trace: LogLevel.Trace
};
const logConfig = {
format: _format.json(),
levels: _logLevel,
transports: [
new _transports.Console()
]
const logger = createLogger(logConfig);