sourcebot/packages/backend/src/logger.ts

47 lines
1.5 KiB
TypeScript
Raw Normal View History

2024-10-17 20:31:18 +00:00
import winston, { format } from 'winston';
2025-03-02 05:40:47 +00:00
import { SOURCEBOT_LOG_LEVEL, LOGTAIL_TOKEN, LOGTAIL_HOST } from './environment.js';
import { Logtail } from '@logtail/node';
import { LogtailTransport } from '@logtail/winston';
2024-10-17 20:31:18 +00:00
const { combine, colorize, timestamp, prettyPrint, errors, printf, label: labelFn } = format;
2025-03-02 05:40:47 +00:00
2024-10-17 20:31:18 +00:00
const createLogger = (label: string) => {
return winston.createLogger({
level: SOURCEBOT_LOG_LEVEL,
format: combine(
errors({ stack: true }),
timestamp(),
prettyPrint(),
labelFn({
label: label,
})
),
transports: [
new winston.transports.Console({
format: combine(
errors({ stack: true }),
colorize(),
printf(({ level, message, timestamp, stack, label: _label }) => {
const label = `[${_label}] `;
if (stack) {
return `${timestamp} ${level}: ${label}${message}\n${stack}`;
}
return `${timestamp} ${level}: ${label}${message}`;
}),
),
}),
2025-03-02 05:40:47 +00:00
...(LOGTAIL_TOKEN && LOGTAIL_HOST ? [
new LogtailTransport(
new Logtail(LOGTAIL_TOKEN, {
endpoint: LOGTAIL_HOST,
})
)
] : []),
2024-10-17 20:31:18 +00:00
]
});
}
export {
createLogger
};