mirror of
https://github.com/IT4Change/gradido.git
synced 2026-02-06 09:56:05 +00:00
77 lines
2.0 KiB
TypeScript
77 lines
2.0 KiB
TypeScript
import type {
|
|
Appender,
|
|
DateFileAppender,
|
|
LogLevelFilterAppender,
|
|
StandardOutputAppender,
|
|
} from 'log4js'
|
|
import { CustomFileAppender } from './types'
|
|
|
|
const fileAppenderTemplate = {
|
|
type: 'dateFile' as const,
|
|
pattern: 'yyyy-MM-dd',
|
|
compress: true,
|
|
keepFileExt: true,
|
|
fileNameSep: '_',
|
|
numBackups: 30,
|
|
}
|
|
|
|
const defaultAppenders = {
|
|
errorFile: {
|
|
type: 'dateFile' as const,
|
|
filename: 'errors.log',
|
|
pattern: 'yyyy-MM-dd',
|
|
layout: { type: 'coloredContext' as const, withStack: true },
|
|
compress: true,
|
|
keepFileExt: true,
|
|
fileNameSep: '_',
|
|
numBackups: 30,
|
|
} as DateFileAppender,
|
|
errors: {
|
|
type: 'logLevelFilter' as const,
|
|
level: 'error' as const,
|
|
appender: 'errorFile' as const,
|
|
} as LogLevelFilterAppender,
|
|
out: {
|
|
type: 'stdout' as const,
|
|
layout: { type: 'coloredContext' as const, withStack: 'error' },
|
|
} as StandardOutputAppender,
|
|
}
|
|
|
|
/**
|
|
* Creates the appender configuration for log4js.
|
|
*
|
|
* @param {CustomFileAppender[]} fileAppenders
|
|
* the list of custom file appenders to add to the standard
|
|
* appenders.
|
|
* @param {string} [basePath]
|
|
* the base path for all log files.
|
|
* @param {boolean} [stacktraceOnStdout=false]
|
|
* whether to show the stacktrace on the standard output
|
|
* appender.
|
|
* @returns {Object<string, Appender>}
|
|
* the appender configuration as a map
|
|
*/
|
|
export function createAppenderConfig(
|
|
fileAppenders: CustomFileAppender[],
|
|
basePath?: string,
|
|
): { [name: string]: Appender } {
|
|
if (basePath) {
|
|
defaultAppenders.errorFile.filename = `${basePath}/errors.log`
|
|
}
|
|
const customAppender: { [name: string]: Appender } = { ...defaultAppenders }
|
|
|
|
fileAppenders.forEach((appender) => {
|
|
const filename = appender.filename ?? `${appender.name}.log`
|
|
const dateFile: DateFileAppender = {
|
|
...fileAppenderTemplate,
|
|
filename: basePath ? `${basePath}/${filename}` : filename,
|
|
}
|
|
dateFile.layout = {
|
|
type: 'coloredContext',
|
|
...appender.layout,
|
|
}
|
|
customAppender[appender.name] = dateFile
|
|
})
|
|
return customAppender
|
|
}
|