UNPKG

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