d48659f4bbaea774db5c32b2f44ff784eeaa8245
1 import type { FormatWrap
} from
'logform';
2 import { type Logger
, createLogger
, format
, type transport
} from
'winston';
3 import TransportType from
'winston/lib/winston/transports/index.js';
4 import DailyRotateFile from
'winston-daily-rotate-file';
6 // import { Configuration, Utils } from './internal';
7 import { Configuration
} from
'./Configuration';
8 import { Utils
} from
'./Utils';
10 let transports
: transport
[];
11 if (Configuration
.getLogRotate() === true) {
12 const logMaxFiles
= Configuration
.getLogMaxFiles();
13 const logMaxSize
= Configuration
.getLogMaxSize();
16 filename
: Utils
.insertAt(
17 Configuration
.getLogErrorFile(),
19 Configuration
.getLogErrorFile()?.indexOf('.log')
22 ...(logMaxFiles
&& { maxFiles
: logMaxFiles
}),
23 ...(logMaxSize
&& { maxSize
: logMaxSize
}),
26 filename
: Utils
.insertAt(
27 Configuration
.getLogFile(),
29 Configuration
.getLogFile()?.indexOf('.log')
31 ...(logMaxFiles
&& { maxFiles
: logMaxFiles
}),
32 ...(logMaxSize
&& { maxSize
: logMaxSize
}),
37 new TransportType
.File({ filename
: Configuration
.getLogErrorFile(), level
: 'error' }),
38 new TransportType
.File({ filename
: Configuration
.getLogFile() }),
42 const logger
: Logger
= createLogger({
43 level
: Configuration
.getLogLevel(),
44 format
: format
.combine(format
.splat(), (format
[Configuration
.getLogFormat()] as FormatWrap
)()),
49 // If enabled, log to the `console` with the format:
50 // `${info.level}: ${info.message} JSON.stringify({ ...rest }) `
52 if (Configuration
.getLogConsole()) {
54 new TransportType
.Console({
55 format
: format
.combine(
57 (format
[Configuration
.getLogFormat()] as FormatWrap
)()