@@ -58,7 +58,7 @@ declare namespace winston {
58
58
[ optionName : string ] : any ;
59
59
}
60
60
61
- interface LogMethod {
61
+ interface LogMethod {
62
62
( level : string , message : string , callback : LogCallback ) : Logger ;
63
63
( level : string , message : string , meta : any , callback : LogCallback ) : Logger ;
64
64
( level : string , message : string , ...meta : any [ ] ) : Logger ;
@@ -74,8 +74,8 @@ declare namespace winston {
74
74
( infoObject : object ) : Logger ;
75
75
}
76
76
77
- interface LoggerOptions {
78
- levels ?: Config . AbstractConfigSetLevels ;
77
+ interface LoggerOptions < T extends Config . AbstractConfigSetLevels = Config . AbstractConfigSetLevels > {
78
+ levels ?: T ;
79
79
silent ?: boolean ;
80
80
format ?: logform . Format ;
81
81
level ?: string ;
@@ -86,7 +86,29 @@ declare namespace winston {
86
86
exceptionHandlers ?: any ;
87
87
}
88
88
89
- interface Logger extends NodeJSStream . Transform {
89
+ type DefaulLevels = {
90
+ // for cli and npm levels
91
+ error : number ;
92
+ warn : number ;
93
+ help : number ;
94
+ data : number ;
95
+ info : number ;
96
+ debug : number ;
97
+ prompt : number ;
98
+ http : number ;
99
+ verbose : number ;
100
+ input : number ;
101
+ silly : number ;
102
+
103
+ // for syslog levels only
104
+ emerg : number ;
105
+ alert : number ;
106
+ crit : number ;
107
+ warning : number ;
108
+ notice : number ;
109
+ }
110
+
111
+ type Logger < T extends Config . AbstractConfigSetLevels = DefaulLevels > = NodeJSStream . Transform & {
90
112
silent : boolean ;
91
113
format : logform . Format ;
92
114
levels : Config . AbstractConfigSetLevels ;
@@ -103,26 +125,6 @@ declare namespace winston {
103
125
clear ( ) : Logger ;
104
126
close ( ) : Logger ;
105
127
106
- // for cli and npm levels
107
- error : LeveledLogMethod ;
108
- warn : LeveledLogMethod ;
109
- help : LeveledLogMethod ;
110
- data : LeveledLogMethod ;
111
- info : LeveledLogMethod ;
112
- debug : LeveledLogMethod ;
113
- prompt : LeveledLogMethod ;
114
- http : LeveledLogMethod ;
115
- verbose : LeveledLogMethod ;
116
- input : LeveledLogMethod ;
117
- silly : LeveledLogMethod ;
118
-
119
- // for syslog levels only
120
- emerg : LeveledLogMethod ;
121
- alert : LeveledLogMethod ;
122
- crit : LeveledLogMethod ;
123
- warning : LeveledLogMethod ;
124
- notice : LeveledLogMethod ;
125
-
126
128
query ( options ?: QueryOptions , callback ?: ( err : Error , results : any ) => void ) : any ;
127
129
stream ( options ?: any ) : NodeJS . ReadableStream ;
128
130
@@ -142,7 +144,7 @@ declare namespace winston {
142
144
isSillyEnabled ( ) : boolean ;
143
145
144
146
new ( options ?: LoggerOptions ) : Logger ;
145
- }
147
+ } & { [ K in keyof T ] : LeveledLogMethod ; }
146
148
147
149
interface Container {
148
150
loggers : Map < string , Logger > ;
@@ -162,7 +164,7 @@ declare namespace winston {
162
164
let loggers : Container ;
163
165
164
166
let addColors : ( target : Config . AbstractConfigSetColors ) => any ;
165
- let createLogger : ( options ?: LoggerOptions ) => Logger ;
167
+ let createLogger : < T extends Config . AbstractConfigSetLevels = DefaulLevels > ( options ?: LoggerOptions < T > ) => Logger < T > ;
166
168
167
169
// Pass-through npm level methods routed to the default logger.
168
170
let error : LeveledLogMethod ;
0 commit comments