Setup winston logger + loki transport

This commit is contained in:
2023-09-05 10:32:23 -05:00
parent 28735c7d5c
commit 7ddfaa483b
3 changed files with 57 additions and 2 deletions

47
src/logger.ts Normal file
View 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;