Files
bus-reminder/src/logger.ts

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;