@@ -2,14 +2,26 @@ import { LogEvent } from '@/models';
2
2
import { auth } from '@clerk/nextjs/server' ;
3
3
import { headers } from 'next/headers' ;
4
4
import winston , { format } from 'winston' ;
5
+ import Transport from 'winston-transport' ;
5
6
import { Logger , LogLevel } from './logger' ;
6
7
import { PrismaTransport } from './prisma-transport' ;
8
+ import { RedisTransport } from './redis-transport' ;
7
9
const { combine, timestamp, json } = format ;
8
10
9
11
export class WinstonLogger implements Logger {
10
12
private readonly winstonLogger : winston . Logger ;
11
13
12
14
constructor ( ) {
15
+ const transports : Transport [ ] = [
16
+ new winston . transports . Console ( { level : 'info' } ) ,
17
+ ] ;
18
+
19
+ if ( process . env . LOGGING_DB_TYPE ?. toUpperCase ( ) === 'POSTGRES' ) {
20
+ transports . push ( new PrismaTransport ( { level : 'debug' } ) ) ;
21
+ } else if ( process . env . LOGGING_DB_TYPE ?. toUpperCase ( ) === 'REDIS' ) {
22
+ transports . push ( new RedisTransport ( { level : 'debug' } ) ) ;
23
+ }
24
+
13
25
this . winstonLogger = winston . createLogger ( {
14
26
level : 'debug' ,
15
27
format : combine (
@@ -22,10 +34,7 @@ export class WinstonLogger implements Logger {
22
34
timestamp ( ) ,
23
35
json ( ) ,
24
36
) ,
25
- transports : [
26
- new winston . transports . Console ( { level : 'info' } ) ,
27
- new PrismaTransport ( { level : 'debug' } ) ,
28
- ] ,
37
+ transports,
29
38
} ) ;
30
39
}
31
40
0 commit comments