mirror of
https://github.com/Xevion/bus-reminder.git
synced 2025-12-16 02:11:16 -06:00
Setup winston logger + loki transport
This commit is contained in:
47
src/logger.ts
Normal file
47
src/logger.ts
Normal file
@@ -0,0 +1,47 @@
|
||||
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(
|
||||
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;
|
||||
Reference in New Issue
Block a user