File¶
Usage¶
const Logger = require('leekslazylogger');
const { FileTransport } = require('leekslazylogger/dist/transports');
const log = new Logger({
transports: [
new FileTransport()
]
});
Or, alternatively:
const Logger = require('leekslazylogger');
const log = new Logger({
transports: [
new Logger.transports.FileTransport()
]
});
Options¶
Defaults
See defaults.ts
Types:
interface Partial<FileTransportOptions> {
clean_directory?: number
directory?: string
file?: string | (() => string),
format?: string | ((this: FileTransportOptions, log: Log) => string),
header?: string | ((this: FileTransportOptions) => string),
level?: string,
name?: string,
new_file?: 'day' | 'run',
timestamp?: string | ((date: Date) => string)
}
clean_directory
¶
Default
clean_directory: 7
The number of days to keep log files. Set to -1
to never delete log files.
directory
¶
Default
directory: './logs'
The directory to use for log files.
file
¶
Default
file: 'YYYY-MM-DD.log'
A string or a function that returns a string - the filename.
format
¶
Default
format: function (this: FileTransportOptions, log: Log): string {
const timestamp = typeof this.timestamp === 'function' ? this.timestamp(log.timestamp) : dtf.fill(this.timestamp, log.timestamp);
return `[${timestamp}] [${log.level.name.toUpperCase()}] ${log.namespace ? `(${log.namespace.toUpperCase()}) ` : ''}${log.content}`;
}
Either a string containing placeholders, or a function which returns a string.
String format¶
Placeholders:
{timestamp}
{level}
/{LEVEL}
{namespace}
/{NAMESPACE}
{file}
{line}
{column}
{content}
Function format¶
To access the transport options (eg. timestamp
) from within the function, use a classic function (not an ES6 arrow function) so this
is the options object. The function is passed one argument, the Log
object.
Log
object
interface Log {
content: string,
level: LogLevel,
namespace: string | null,
timestamp: Date
}
header
¶
Default
header: function (this: FileTransportOptions): string {
const datetime = dtf.fill('DDDD, DD MMMM YYYY at HH:mm AMPM');
const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
return `\r\n\t❯ ${this.name}\r\n\t❯ Powered by leekslazylogger v${version}\r\n\t❯ Log level "${this.level}"\r\n\t❯ Node.js ${process.version} on ${process.platform}\r\n\t❯ ${datetime} (${timezone}) -->\r\n`;
}
A function which returns a string; inserted at the start of log files (or at startup if using run
mode).
To access the transport options (eg. timestamp
) from within the function, use a classic function (not an ES6 arrow function) so this
is the options object.
Return an empty string to disable.
level
¶
Default
level: 'info'
The name of the minimum log level that this transport will receive.
name
¶
Default
name: 'A leekslazylogger project'
A string used in the default header
format.
new_file
¶
Default
new_file: 'day'
Either 'day'
or 'run'
to create a new file every day or every time the program is run. Change the file
if using run
!
A string used in the default header
format.
timestamp
¶
Default
timestamp: 'DD/MM/YY HH:mm:ss'
Either a DTF placeholder format, or a function which takes a Date
and returns a string.