log4js-node/types/log4js.d.ts
2018-02-15 11:49:44 +02:00

462 lines
13 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Type definitions for log4js
export interface Log4js {
getLogger,
configure,
addLayout,
connectLogger,
levels,
shutdown
}
export function getLogger(category?: string): Logger;
export function configure(filename: string): Log4js;
export function configure(config: Configuration): Log4js;
export function addLayout(name: string, config: (a: any) => (logEvent: LoggingEvent) => string): void;
export function connectLogger(logger: Logger, options: { format?: string; level?: string; nolog?: any; }): any; // express.Handler;
export function levels(): Levels;
export function shutdown(cb?: (error: Error) => void): void | null;
export interface BaseLayout {
type: 'basic';
}
export interface ColoredLayout {
type: 'colored' | 'coloured';
}
export interface MessagePassThroughLayout {
type: 'messagePassThrough';
}
export interface DummyLayout {
type: 'dummy';
}
export interface Level {
isEqualTo(other: string): boolean;
isEqualTo(otherLevel: Level): boolean;
isLessThanOrEqualTo(other: string): boolean;
isLessThanOrEqualTo(otherLevel: Level): boolean;
isGreaterThanOrEqualTo(other: string): boolean;
isGreaterThanOrEqualTo(otherLevel: Level): boolean;
}
export interface LoggingEvent {
categoryName: string; // name of category
level: Level; // level of message
data: any[]; // objects to log
startTime: Date;
pid: number;
context: any;
cluster?: {
workerId: number;
worker: number;
};
}
export type Token = ((logEvent: LoggingEvent) => string) | string;
export interface PatternLayout {
type: 'pattern';
// specifier for the output format, using placeholders as described below
pattern: string;
// user-defined tokens to be used in the pattern
tokens?: { [name: string]: Token };
}
export interface CustomLayout {
[key: string]: any;
type: string;
}
export type Layout = BaseLayout | ColoredLayout | MessagePassThroughLayout | DummyLayout | PatternLayout | CustomLayout;
/**
* Category Filter
*
* @see https://log4js-node.github.io/log4js-node/categoryFilter.html
*/
export interface CategoryFilterAppender {
type: "categoryFilter";
// the category (or categories if you provide an array of values) that will be excluded from the appender.
exclude?: string | string[];
// the name of the appender to filter. see https://log4js-node.github.io/log4js-node/layouts.html
appender?: string;
}
/**
* Console Appender
*
* @see https://log4js-node.github.io/log4js-node/console.html
*/
export interface ConsoleAppender {
type: 'console';
// defaults to colouredLayout
layout?: Layout;
}
export interface FileAppender {
type: 'file';
// the path of the file where you want your logs written.
filename: string;
// the maximum size (in bytes) for the log file. If not specified, then no log rolling will happen.
maxLogSize?: number;
// (default value = 5) - the number of old log files to keep during log rolling.
backups?: number;
// defaults to basic layout
layout?: Layout;
numBackups?: number;
compress?: boolean; // compress the backups
// keep the file extension when rotating logs
keepFileExt?: boolean;
encoding?: string;
mode?: number;
flags?: string;
}
export interface SyncfileAppender {
type: 'fileSync';
// the path of the file where you want your logs written.
filename: string;
// the maximum size (in bytes) for the log file. If not specified, then no log rolling will happen.
maxLogSize?: number;
// (default value = 5) - the number of old log files to keep during log rolling.
backups?: number;
// defaults to basic layout
layout?: Layout;
}
export interface DateFileAppender {
type: 'dateFile';
// the path of the file where you want your logs written.
filename: string;
// defaults to basic layout
layout?: Layout;
// defaults to .yyyy-MM-dd - the pattern to use to determine when to roll the logs.
/**
* The following strings are recognised in the pattern:
* - yyyy : the full year, use yy for just the last two digits
* - MM : the month
* - dd : the day of the month
* - hh : the hour of the day (24-hour clock)
* - mm : the minute of the hour
* - ss : seconds
* - SSS : milliseconds (although I'm not sure you'd want to roll your logs every millisecond)
* - O : timezone (capital letter o)
*/
pattern?: string;
// default “utf-8”
encoding?: string;
// default 0644
mode?: number;
// default a
flags?: string;
// compress the backup files during rolling (backup files will have .gz extension)(default false)
compress?: boolean;
// include the pattern in the name of the current log file as well as the backups.(default false)
alwaysIncludePattern?: boolean;
// keep the file extension when rotating logs
keepFileExt?: boolean;
// if this value is greater than zero, then files older than that many days will be deleted during log rolling.(default 0)
daysToKeep?: number;
}
export interface GELFAppender {
'type': 'gelf';
// (defaults to localhost) - the gelf server hostname
host?: string;
// (defaults to 12201) - the port the gelf server is listening on
port?: number;
// (defaults to OS.hostname()) - the hostname used to identify the origin of the log messages.
hostname?: string;
facility?: string;
// fields to be added to each log message; custom fields must start with an underscore.
customFields?: { [field: string]: any };
}
export interface HipchatAppender {
type: 'hipchat';
// User token with notification privileges
hipchat_token: string;
// Room ID or name
hipchat_room: string;
// (defaults to empty string) - a label to say where the message is from
hipchat_from?: string;
// (defaults to false) - make hipchat annoy people
hipchat_notify?: boolean;
// (defaults to api.hipchat.com) - set this if you have your own hipchat server
hipchat_host?: string;
// (defaults to only throwing errors) - implement this function if you want intercept the responses from hipchat
hipchat_response_callback?(err: Error, response: any): any;
// (defaults to messagePassThroughLayout)
layout?: Layout;
}
export interface LogFacesHTTPAppender {
type: 'logFaces-HTTP';
// logFaces receiver servlet URL
url: string;
// (defaults to empty string) - used to identify your applications logs
application?: string;
// (defaults to 5000ms) - the timeout for the HTTP request.
timeout?: number;
}
export interface LogFacesUDPAppender {
type: 'logFaces-UDP';
// (defaults to 127.0.0.1)- hostname or IP address of the logFaces receiver
remoteHost?: string;
// (defaults to 55201) - port the logFaces receiver is listening on
port?: number;
// (defaults to empty string) - used to identify your applications logs
application?: string;
}
export interface LogglyAppender {
type: 'loggly';
// your really long input token
token: string;
// your subdomain
subdomain: string;
// tags to include in every log message
tags?: string[];
}
export interface LogLevelFilterAppender {
type: 'logLevelFilter';
// the name of an appender, defined in the same configuration, that you want to filter
appender: string;
// the minimum level of event to allow through the filter
level: string;
// (defaults to FATAL) - the maximum level of event to allow through the filter
maxLevel?: string;
}
export interface LogstashUDPAppender {
type: 'logstashUDP';
// hostname (or IP-address) of the logstash server
host: string;
// port of the logstash server
port: number;
// used for the type field in the logstash data
logType?: string;
// used for the type field of the logstash data if logType is not defined
category?: string;
// extra fields to log with each event
fields?: { [fieldname: string]: any };
// (defaults to dummyLayout) used for the message field of the logstash data
layout?: Layout;
}
export interface MailgunAppender {
type: 'mailgun';
// your mailgun API key
apiKey: string;
// your domain
domain: string;
from: string;
to: string;
subject: string;
// (defaults to basicLayout)
layout?: Layout;
}
export interface MultiFileAppender {
type: 'multiFile';
// the base part of the generated log filename
base: string;
// the value to use to split files (see below).
property: string;
// the suffix for the generated log filename.
extension: string;
}
export interface MultiprocessAppender {
type: 'multiprocess';
// controls whether the appender listens for log events sent over the network, or is responsible for serialising events and sending them to a server.
mode: 'master' | 'worker';
// (only needed if mode == master)- the name of the appender to send the log events to
appender?: string;
// (defaults to 5000) - the port to listen on, or send to
loggerPort?: number;
// (defaults to localhost) - the host/IP address to listen on, or send to
loggerHost?: string;
}
export interface RedisAppender {
type: 'redis';
// (defaults to 127.0.0.1) - the location of the redis server
host?: string;
// (defaults to 6379) - the port the redis server is listening on
port?: number;
// password to use when authenticating connection to redis
pass?: string;
// the redis channel that log events will be published to
channel: string;
// (defaults to messagePassThroughLayout) - the layout to use for log events.
layout?: Layout;
}
export interface SlackAppender {
type: 'slack';
// your Slack API token (see the slack and slack-node docs)
token: string;
// the channel to send log messages
channel_id: string;
// the icon to use for the message
icon_url?: string;
// the username to display with the message
username: string;
// (defaults to basicLayout) - the layout to use for the message.
layout?: Layout;
}
export interface RecordingAppender {
type: 'recording';
}
export interface SmtpAppender {
type: 'smtp';
// (if not present will use transport field)
SMTP?: {
// (defaults to localhost)
host?: string;
// (defaults to 25)
port?: number;
// authentication details
auth?: {
user: string;
pass: string;
};
};
// (if not present will use SMTP) - see nodemailer docs for transport options
transport?: {
// (defaults to smtp) - the nodemailer transport plugin to use
plugin?: string;
// configuration for the transport plugin
options?: any;
} | string;
// send logs as email attachment
attachment?: {
// (defaults to false)
enable?: boolean;
// (defaults to See logs as attachment) - message to put in body of email
message: string;
// (defaults to default.log) - attachment filename
filename: string;
};
// integer(defaults to 0) - batch emails and send in one email every sendInterval seconds, if 0 then every log message will send an email.
sendInterval?: number;
// (defaults to 5) - time in seconds to wait for emails to be sent during shutdown
shutdownTimeout?: number;
// email addresses to send the logs to
recipients: string;
// (defaults to message from first log event in batch) - subject for email
subject?: string;
// who the logs should be sent as
sender?: string;
// (defaults to false) - send the email as HTML instead of plain text
html?: boolean;
// (defaults to basicLayout)
layout?: Layout;
}
export interface StandardErrorAppender {
type: 'stderr';
// (defaults to colouredLayout)
layout?: Layout;
}
export interface StandardOutputAppender {
type: 'stdout';
// (defaults to colouredLayout)
layout?: Layout;
}
export interface CustomAppender {
type: string;
[key: string]: any;
}
export type Appender = CategoryFilterAppender
| ConsoleAppender
| FileAppender
| SyncfileAppender
| DateFileAppender
| GELFAppender
| HipchatAppender
| LogFacesHTTPAppender
| LogFacesUDPAppender
| LogglyAppender
| LogLevelFilterAppender
| LogstashUDPAppender
| MailgunAppender
| MultiFileAppender
| MultiprocessAppender
| RedisAppender
| SlackAppender
| RecordingAppender
| SmtpAppender
| StandardErrorAppender
| StandardOutputAppender
| CustomAppender;
export interface Levels {
[index: string]: {
value: number;
colour: string;
};
}
export interface Configuration {
appenders: { [name: string]: Appender; };
categories: { [name: string]: { appenders: string[]; level: string; } };
pm2?: boolean;
pm2InstanceVar?: string;
levels?: Levels;
disableClustering?: boolean;
}
export interface Logger {
new(dispatch: Function, name: string): Logger;
level: string;
log(...args: any[]): void;
isLevelEnabled(level?: string): boolean;
isTraceEnabled(): boolean;
isDebugEnabled(): boolean;
isInfoEnabled(): boolean;
isWarnEnabled(): boolean;
isErrorEnabled(): boolean;
isFatalEnabled(): boolean;
_log(level: string, data: any): void;
addContext(key: string, value: any): void;
removeContext(key: string): void;
clearContext(): void;
trace(message: string, ...args: any[]): void;
debug(message: string, ...args: any[]): void;
info(message: string, ...args: any[]): void;
warn(message: string, ...args: any[]): void;
error(message: string, ...args: any[]): void;
fatal(message: string, ...args: any[]): void;
}