UNPKG

5.89 kBTypeScriptView Raw
1// Type definitions for winston 3.0
2// Project: https://github.com/winstonjs/winston
3
4/// <reference types="node" />
5
6import * as NodeJSStream from 'stream';
7
8import * as logform from 'logform';
9import * as Transport from 'winston-transport';
10
11import * as Config from './lib/winston/config/index';
12import * as Transports from './lib/winston/transports/index';
13
14declare namespace winston {
15 // Hoisted namespaces from other modules
16 export import format = logform.format;
17 export import Logform = logform;
18 export import config = Config;
19 export import transports = Transports;
20 export import transport = Transport;
21
22 class ExceptionHandler {
23 constructor(logger: Logger);
24 logger: Logger;
25 handlers: Map<any, any>;
26 catcher: Function | boolean;
27
28 handle(...transports: Transport[]): void;
29 unhandle(...transports: Transport[]): void;
30 getAllInfo(err: string | Error): object;
31 getProcessInfo(): object;
32 getOsInfo(): object;
33 getTrace(err: Error): object;
34 }
35
36 class RejectionHandler {
37 constructor(logger: Logger);
38 logger: Logger;
39 handlers: Map<any, any>;
40 catcher: Function | boolean;
41
42 handle(...transports: Transport[]): void;
43 unhandle(...transports: Transport[]): void;
44 getAllInfo(err: string | Error): object;
45 getProcessInfo(): object;
46 getOsInfo(): object;
47 getTrace(err: Error): object;
48 }
49
50 interface QueryOptions {
51 rows?: number;
52 limit?: number;
53 start?: number;
54 from?: Date;
55 until?: Date;
56 order?: 'asc' | 'desc';
57 fields: any;
58 }
59
60 class Profiler {
61 logger: Logger;
62 start: Number;
63 done(info?: any): boolean;
64 }
65
66 type LogCallback = (
67 error?: any,
68 level?: string,
69 message?: string,
70 meta?: any
71 ) => void;
72
73 interface LogEntry {
74 level: string;
75 message: string;
76 [optionName: string]: any;
77 }
78
79 interface LogMethod {
80 (level: string, message: string, callback: LogCallback): Logger;
81 (level: string, message: string, meta: any, callback: LogCallback): Logger;
82 (level: string, message: string, ...meta: any[]): Logger;
83 (entry: LogEntry): Logger;
84 (level: string, message: any): Logger;
85 }
86
87 interface LeveledLogMethod {
88 (message: string, callback: LogCallback): Logger;
89 (message: string, meta: any, callback: LogCallback): Logger;
90 (message: string, ...meta: any[]): Logger;
91 (message: any): Logger;
92 (infoObject: object): Logger;
93 }
94
95 interface LoggerOptions {
96 levels?: Config.AbstractConfigSetLevels;
97 silent?: boolean;
98 format?: logform.Format;
99 level?: string;
100 exitOnError?: Function | boolean;
101 defaultMeta?: any;
102 transports?: Transport[] | Transport;
103 handleExceptions?: boolean;
104 handleRejections?: boolean;
105 exceptionHandlers?: any;
106 rejectionHandlers?: any;
107 }
108
109 class Logger extends NodeJSStream.Transform {
110 constructor(options?: LoggerOptions);
111
112 silent: boolean;
113 format: logform.Format;
114 levels: Config.AbstractConfigSetLevels;
115 level: string;
116 transports: Transport[];
117 exceptions: ExceptionHandler;
118 rejections: RejectionHandler;
119 profilers: object;
120 exitOnError: Function | boolean;
121 defaultMeta?: any;
122
123 log: LogMethod;
124 add(transport: Transport): this;
125 remove(transport: Transport): this;
126 clear(): this;
127 close(): this;
128
129 // for cli and npm levels
130 error: LeveledLogMethod;
131 warn: LeveledLogMethod;
132 help: LeveledLogMethod;
133 data: LeveledLogMethod;
134 info: LeveledLogMethod;
135 debug: LeveledLogMethod;
136 prompt: LeveledLogMethod;
137 http: LeveledLogMethod;
138 verbose: LeveledLogMethod;
139 input: LeveledLogMethod;
140 silly: LeveledLogMethod;
141
142 // for syslog levels only
143 emerg: LeveledLogMethod;
144 alert: LeveledLogMethod;
145 crit: LeveledLogMethod;
146 warning: LeveledLogMethod;
147 notice: LeveledLogMethod;
148
149 query(
150 options?: QueryOptions,
151 callback?: (err: Error, results: any) => void
152 ): any;
153 stream(options?: any): NodeJS.ReadableStream;
154
155 startTimer(): Profiler;
156 profile(id: string | number, meta?: Record<string, any>): this;
157
158 configure(options: LoggerOptions): void;
159
160 child(options: Object): this;
161
162 isLevelEnabled(level: string): boolean;
163 isErrorEnabled(): boolean;
164 isWarnEnabled(): boolean;
165 isInfoEnabled(): boolean;
166 isVerboseEnabled(): boolean;
167 isDebugEnabled(): boolean;
168 isSillyEnabled(): boolean;
169 }
170
171 class Container {
172 loggers: Map<string, Logger>;
173 options: LoggerOptions;
174
175 add(id: string, options?: LoggerOptions): Logger;
176 get(id: string, options?: LoggerOptions): Logger;
177 has(id: string): boolean;
178 close(id?: string): void;
179
180 constructor(options?: LoggerOptions);
181 }
182
183 let version: string;
184 let loggers: Container;
185
186 let addColors: (target: Config.AbstractConfigSetColors) => any;
187 let createLogger: (options?: LoggerOptions) => Logger;
188
189 // Pass-through npm level methods routed to the default logger.
190 let error: LeveledLogMethod;
191 let warn: LeveledLogMethod;
192 let info: LeveledLogMethod;
193 let http: LeveledLogMethod;
194 let verbose: LeveledLogMethod;
195 let debug: LeveledLogMethod;
196 let silly: LeveledLogMethod;
197
198 // Other pass-through methods routed to the default logger.
199 let log: LogMethod;
200 let query: (
201 options?: QueryOptions,
202 callback?: (err: Error, results: any) => void
203 ) => any;
204 let stream: (options?: any) => NodeJS.ReadableStream;
205 let add: (transport: Transport) => Logger;
206 let remove: (transport: Transport) => Logger;
207 let clear: () => Logger;
208 let startTimer: () => Profiler;
209 let profile: (id: string | number) => Logger;
210 let configure: (options: LoggerOptions) => void;
211 let child: (options: Object) => Logger;
212 let level: string;
213 let exceptions: ExceptionHandler;
214 let rejections: RejectionHandler;
215 let exitOnError: Function | boolean;
216 // let default: object;
217}
218
219export = winston;