1+ import winston from 'winston' ;
2+
3+ export class Logger {
4+ private logger : winston . Logger ;
5+
6+ constructor ( context : string ) {
7+ this . logger = winston . createLogger ( {
8+ level : process . env . LOG_LEVEL || 'info' ,
9+ format : winston . format . combine (
10+ winston . format . timestamp ( ) ,
11+ winston . format . json ( ) ,
12+ winston . format . printf ( ( { timestamp, level, message, ...meta } ) => {
13+ return JSON . stringify ( {
14+ timestamp,
15+ level,
16+ context,
17+ message,
18+ ...meta ,
19+ } ) ;
20+ } )
21+ ) ,
22+ transports : [
23+ new winston . transports . Console ( {
24+ format : winston . format . combine (
25+ winston . format . colorize ( ) ,
26+ winston . format . simple ( )
27+ ) ,
28+ } ) ,
29+ new winston . transports . File ( {
30+ filename : 'logs/error.log' ,
31+ level : 'error' ,
32+ } ) ,
33+ new winston . transports . File ( {
34+ filename : 'logs/combined.log' ,
35+ } ) ,
36+ ] ,
37+ } ) ;
38+ }
39+
40+ info ( message : string , meta ?: Record < string , unknown > ) : void {
41+ this . logger . info ( message , meta ) ;
42+ }
43+
44+ error ( message : string , error ?: Error , meta ?: Record < string , unknown > ) : void {
45+ this . logger . error ( message , {
46+ error : error ?. message ,
47+ stack : error ?. stack ,
48+ ...meta ,
49+ } ) ;
50+ }
51+
52+ warn ( message : string , meta ?: Record < string , unknown > ) : void {
53+ this . logger . warn ( message , meta ) ;
54+ }
55+
56+ debug ( message : string , meta ?: Record < string , unknown > ) : void {
57+ this . logger . debug ( message , meta ) ;
58+ }
59+
60+ trace ( message : string , meta ?: Record < string , unknown > ) : void {
61+ this . logger . silly ( message , meta ) ;
62+ }
63+ }
0 commit comments