1 |
|
2 |
|
3 | type Format = string | ((req: any, res: any, formatter: ((str: string) => string)) => string);
|
4 |
|
5 | export 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 |
|
15 | export function getLogger(category?: string): Logger;
|
16 |
|
17 | export function configure(filename: string): Log4js;
|
18 | export function configure(config: Configuration): Log4js;
|
19 |
|
20 | export function addLayout(name: string, config: (a: any) => (logEvent: LoggingEvent) => any): void;
|
21 |
|
22 | export function connectLogger(logger: Logger, options: { format?: Format; level?: string; nolog?: any; statusRules?: any[] }): any; // express.Handler;
|
23 |
|
24 | export const levels: Levels;
|
25 |
|
26 | export function shutdown(cb?: (error: Error) => void): void | null;
|
27 |
|
28 | export interface BaseLayout {
|
29 | type: 'basic';
|
30 | }
|
31 |
|
32 | export interface ColoredLayout {
|
33 | type: 'colored' | 'coloured';
|
34 | }
|
35 |
|
36 | export interface MessagePassThroughLayout {
|
37 | type: 'messagePassThrough';
|
38 | }
|
39 |
|
40 | export interface DummyLayout {
|
41 | type: 'dummy';
|
42 | }
|
43 |
|
44 | export 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 |
|
53 | export 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 |
|
66 | export type Token = ((logEvent: LoggingEvent) => string) | string;
|
67 |
|
68 | export 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 |
|
76 | export interface CustomLayout {
|
77 | [key: string]: any;
|
78 | type: string;
|
79 | }
|
80 |
|
81 | export 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 | */
|
88 | export 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 | */
|
101 | export 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 | */
|
116 | export interface ConsoleAppender {
|
117 | type: 'console';
|
118 | // defaults to colouredLayout
|
119 | layout?: Layout;
|
120 | }
|
121 |
|
122 | export 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 |
|
141 | export 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 |
|
153 | export 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 | // default “utf-8”
|
173 | encoding?: string;
|
174 | // default 0644
|
175 | mode?: number;
|
176 | // default ‘a’
|
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 |
|
188 | export 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 |
|
198 | export 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 |
|
208 | export 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 |
|
220 | export interface RecordingAppender {
|
221 | type: 'recording';
|
222 | }
|
223 |
|
224 | export interface StandardErrorAppender {
|
225 | type: 'stderr';
|
226 | // (defaults to colouredLayout)
|
227 | layout?: Layout;
|
228 | }
|
229 |
|
230 | export interface StandardOutputAppender {
|
231 | type: 'stdout';
|
232 | // (defaults to colouredLayout)
|
233 | layout?: Layout;
|
234 | }
|
235 |
|
236 | export interface CustomAppender {
|
237 | type: string;
|
238 | [key: string]: any;
|
239 | }
|
240 |
|
241 | export 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 |
|
255 | export 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 |
|
270 | export 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 |
|
279 | export 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 |