mirror of
https://github.com/Xevion/bus-reminder.git
synced 2025-12-10 22:06:42 -06:00
48 lines
1.1 KiB
TypeScript
48 lines
1.1 KiB
TypeScript
import { createLogger, format, type Logger, transports } from 'winston';
|
|
import LokiTransport from 'winston-loki';
|
|
import { env } from '@/env/server.mjs';
|
|
|
|
const logger: Logger = createLogger({
|
|
level: 'debug',
|
|
format: format.combine(
|
|
format.timestamp({
|
|
format: 'YYYY-MM-DD HH:mm:ss'
|
|
}),
|
|
format.errors({ stack: true }),
|
|
format.splat(),
|
|
format.json()
|
|
),
|
|
defaultMeta: { service: 'api' },
|
|
transports: [
|
|
new LokiTransport({
|
|
level: 'debug',
|
|
json: true,
|
|
host: env.LOKI_HOST,
|
|
basicAuth: `${env.LOKI_USERNAME}:${env.LOKI_PASSWORD}`,
|
|
labels: { service: 'bus-reminder', environment: env.NODE_ENV }
|
|
}),
|
|
new transports.Console({
|
|
format: format.combine(
|
|
env.NODE_ENV !== 'development' ? format.json() : format.colorize(),
|
|
format.printf(
|
|
({ level, message, timestamp, stack }) =>
|
|
`${timestamp} ${level}: ${stack || message}`
|
|
)
|
|
)
|
|
})
|
|
],
|
|
exceptionHandlers: [
|
|
new transports.Console({
|
|
format: format.combine(
|
|
format.colorize(),
|
|
format.printf(
|
|
({ level, message, timestamp, stack }) =>
|
|
`${timestamp} ${level}: ${stack || message}`
|
|
)
|
|
)
|
|
})
|
|
]
|
|
});
|
|
|
|
export default logger;
|