UNPKG

8.92 kBTypeScriptView Raw
1// Type definitions for log4js
2
3type Format = string | ((req: any, res: any, formatter: ((str: string) => string)) => string);
4
5export interface Log4js {
6 getLogger(category?: string): Logger;
7 configure(filename: string): Log4js;
8 configure(config: Configuration): Log4js;
9 addLayout(name: string, config: (a: any) => (logEvent: LoggingEvent) => string): void;
10 connectLogger(logger: Logger, options: { format?: Format; level?: string; nolog?: any; }): any; // express.Handler;
11 levels: Levels;
12 shutdown(cb: (error: Error) => void): void | null;
13}
14
15export function getLogger(category?: string): Logger;
16
17export function configure(filename: string): Log4js;
18export function configure(config: Configuration): Log4js;
19
20export function addLayout(name: string, config: (a: any) => (logEvent: LoggingEvent) => any): void;
21
22export function connectLogger(logger: Logger, options: { format?: Format; level?: string; nolog?: any; statusRules?: any[] }): any; // express.Handler;
23
24export const levels: Levels;
25
26export function shutdown(cb?: (error: Error) => void): void | null;
27
28export interface BaseLayout {
29 type: 'basic';
30}
31
32export interface ColoredLayout {
33 type: 'colored' | 'coloured';
34}
35
36export interface MessagePassThroughLayout {
37 type: 'messagePassThrough';
38}
39
40export interface DummyLayout {
41 type: 'dummy';
42}
43
44export interface Level {
45 isEqualTo(other: string): boolean;
46 isEqualTo(otherLevel: Level): boolean;
47 isLessThanOrEqualTo(other: string): boolean;
48 isLessThanOrEqualTo(otherLevel: Level): boolean;
49 isGreaterThanOrEqualTo(other: string): boolean;
50 isGreaterThanOrEqualTo(otherLevel: Level): boolean;
51}
52
53export interface LoggingEvent {
54 categoryName: string; // name of category
55 level: Level; // level of message
56 data: any[]; // objects to log
57 startTime: Date;
58 pid: number;
59 context: any;
60 cluster?: {
61 workerId: number;
62 worker: number;
63 };
64}
65
66export type Token = ((logEvent: LoggingEvent) => string) | string;
67
68export interface PatternLayout {
69 type: 'pattern';
70 // specifier for the output format, using placeholders as described below
71 pattern: string;
72 // user-defined tokens to be used in the pattern
73 tokens?: { [name: string]: Token };
74}
75
76export interface CustomLayout {
77 [key: string]: any;
78 type: string;
79}
80
81export type Layout = BaseLayout | ColoredLayout | MessagePassThroughLayout | DummyLayout | PatternLayout | CustomLayout;
82
83/**
84 * Category Filter
85 *
86 * @see https://log4js-node.github.io/log4js-node/categoryFilter.html
87 */
88export interface CategoryFilterAppender {
89 type: "categoryFilter";
90 // the category (or categories if you provide an array of values) that will be excluded from the appender.
91 exclude?: string | string[];
92 // the name of the appender to filter. see https://log4js-node.github.io/log4js-node/layouts.html
93 appender?: string;
94}
95
96/**
97 * No Log Filter
98 *
99 * @see https://log4js-node.github.io/log4js-node/noLogFilter.html
100 */
101export interface NoLogFilterAppender {
102 type: "noLogFilter";
103 // the regular expression (or the regular expressions if you provide an array of values)
104 // will be used for evaluating the events to pass to the appender.
105 // The events, which will match the regular expression, will be excluded and so not logged.
106 exclude: string | string[];
107 // the name of an appender, defined in the same configuration, that you want to filter.
108 appender: string;
109}
110
111/**
112 * Console Appender
113 *
114 * @see https://log4js-node.github.io/log4js-node/console.html
115 */
116export interface ConsoleAppender {
117 type: 'console';
118 // defaults to colouredLayout
119 layout?: Layout;
120}
121
122export interface FileAppender {
123 type: 'file';
124 // the path of the file where you want your logs written.
125 filename: string;
126 // the maximum size (in bytes) for the log file. If not specified, then no log rolling will happen.
127 maxLogSize?: number | string;
128 // (default value = 5) - the number of old log files to keep during log rolling.
129 backups?: number;
130 // defaults to basic layout
131 layout?: Layout;
132 numBackups?: number;
133 compress?: boolean; // compress the backups
134 // keep the file extension when rotating logs
135 keepFileExt?: boolean;
136 encoding?: string;
137 mode?: number;
138 flags?: string;
139}
140
141export interface SyncfileAppender {
142 type: 'fileSync';
143 // the path of the file where you want your logs written.
144 filename: string;
145 // the maximum size (in bytes) for the log file. If not specified, then no log rolling will happen.
146 maxLogSize?: number | string;
147 // (default value = 5) - the number of old log files to keep during log rolling.
148 backups?: number;
149 // defaults to basic layout
150 layout?: Layout;
151}
152
153export interface DateFileAppender {
154 type: 'dateFile';
155 // the path of the file where you want your logs written.
156 filename: string;
157 // defaults to basic layout
158 layout?: Layout;
159 // defaults to .yyyy-MM-dd - the pattern to use to determine when to roll the logs.
160 /**
161 * The following strings are recognised in the pattern:
162 * - yyyy : the full year, use yy for just the last two digits
163 * - MM : the month
164 * - dd : the day of the month
165 * - hh : the hour of the day (24-hour clock)
166 * - mm : the minute of the hour
167 * - ss : seconds
168 * - SSS : milliseconds (although I'm not sure you'd want to roll your logs every millisecond)
169 * - O : timezone (capital letter o)
170 */
171 pattern?: string;
172 // defaultutf-8”
173 encoding?: string;
174 // default 0644
175 mode?: number;
176 // defaulta
177 flags?: string;
178 // compress the backup files during rolling (backup files will have .gz extension)(default false)
179 compress?: boolean;
180 // include the pattern in the name of the current log file as well as the backups.(default false)
181 alwaysIncludePattern?: boolean;
182 // keep the file extension when rotating logs
183 keepFileExt?: boolean;
184 // if this value is greater than zero, then files older than that many days will be deleted during log rolling.(default 0)
185 daysToKeep?: number;
186}
187
188export interface LogLevelFilterAppender {
189 type: 'logLevelFilter';
190 // the name of an appender, defined in the same configuration, that you want to filter
191 appender: string;
192 // the minimum level of event to allow through the filter
193 level: string;
194 // (defaults to FATAL) - the maximum level of event to allow through the filter
195 maxLevel?: string;
196}
197
198export interface MultiFileAppender {
199 type: 'multiFile';
200 // the base part of the generated log filename
201 base: string;
202 // the value to use to split files (see below).
203 property: string;
204 // the suffix for the generated log filename.
205 extension: string;
206}
207
208export interface MultiprocessAppender {
209 type: 'multiprocess';
210 // controls whether the appender listens for log events sent over the network, or is responsible for serialising events and sending them to a server.
211 mode: 'master' | 'worker';
212 // (only needed if mode == master)- the name of the appender to send the log events to
213 appender?: string;
214 // (defaults to 5000) - the port to listen on, or send to
215 loggerPort?: number;
216 // (defaults to localhost) - the host/IP address to listen on, or send to
217 loggerHost?: string;
218}
219
220export interface RecordingAppender {
221 type: 'recording';
222}
223
224export interface StandardErrorAppender {
225 type: 'stderr';
226 // (defaults to colouredLayout)
227 layout?: Layout;
228}
229
230export interface StandardOutputAppender {
231 type: 'stdout';
232 // (defaults to colouredLayout)
233 layout?: Layout;
234}
235
236export interface CustomAppender {
237 type: string;
238 [key: string]: any;
239}
240
241export type Appender = CategoryFilterAppender
242 | ConsoleAppender
243 | FileAppender
244 | SyncfileAppender
245 | DateFileAppender
246 | LogLevelFilterAppender
247 | NoLogFilterAppender
248 | MultiFileAppender
249 | MultiprocessAppender
250 | RecordingAppender
251 | StandardErrorAppender
252 | StandardOutputAppender
253 | CustomAppender;
254
255export interface Levels {
256 ALL: Level;
257 MARK: Level;
258 TRACE: Level;
259 DEBUG: Level;
260 INFO: Level;
261 WARN: Level;
262 ERROR: Level;
263 FATAL: Level;
264 OFF: Level;
265 levels: Level[];
266 getLevel(level: string): Level;
267 addLevels(customLevels: object): void;
268}
269
270export interface Configuration {
271 appenders: { [name: string]: Appender; };
272 categories: { [name: string]: { appenders: string[]; level: string; } };
273 pm2?: boolean;
274 pm2InstanceVar?: string;
275 levels?: Levels;
276 disableClustering?: boolean;
277}
278
279export class Logger {
280 new(dispatch: Function, name: string): Logger;
281
282 level: string;
283
284 log(...args: any[]): void;
285
286 isLevelEnabled(level?: string): boolean;
287
288 isTraceEnabled(): boolean;
289 isDebugEnabled(): boolean;
290 isInfoEnabled(): boolean;
291 isWarnEnabled(): boolean;
292 isErrorEnabled(): boolean;
293 isFatalEnabled(): boolean;
294
295 _log(level: string, data: any): void;
296
297 addContext(key: string, value: any): void;
298
299 removeContext(key: string): void;
300
301 clearContext(): void;
302
303 trace(message: any, ...args: any[]): void;
304
305 debug(message: any, ...args: any[]): void;
306
307 info(message: any, ...args: any[]): void;
308
309 warn(message: any, ...args: any[]): void;
310
311 error(message: any, ...args: any[]): void;
312
313 fatal(message: any, ...args: any[]): void;
314}
315
\No newline at end of file