UNPKG

@easy-koa/shared

Version:

454 lines (398 loc) 15.2 kB
// Type definitions for log4js declare module "log4js" { export function getLogger(category?: string): Logger export function configure(filename: string): void export function configure(config: Configuration): void 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 application’s 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 application’s 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 } }