12345678910111213141516171819202122232425262728293031323334 |
- import winston, { Logger, LoggerOptions } from 'winston'
- import escFormat from '@elastic/ecs-winston-format'
- import { ReadonlyConfig } from '../../types'
- export class LoggingService {
- private loggerOptions: LoggerOptions
- public constructor(config: ReadonlyConfig) {
- const transports: winston.LoggerOptions['transports'] = [
- new winston.transports.File({
- filename: `${config.directories.logs}/logs.json`,
- level: config.log?.file || 'debug',
- }),
- ]
- if (config.log?.console) {
- transports.push(
- new winston.transports.Console({
- level: config.log.console,
- })
- )
- }
- this.loggerOptions = {
- format: escFormat(),
- transports,
- }
- }
- public createLogger(label: string): Logger {
- return winston.createLogger({
- ...this.loggerOptions,
- defaultMeta: { label },
- })
- }
- }
|