sfn-logger
v0.5.4
Published
Simple Friendly Node.js Logger.
Downloads
15
Readme
SFN-Logger
Simple and friendly NodeJS file logger.
This documentation is for sfn-logger 0.4.x, old versions are deprecated.
Install
npm install sfn-logger --save
Example
const Logger = require("sfn-logger");
var logger = new Logger("example.log");
logger.log("Hello, World!");
Create Logger
new Logger(filename: string)
Creates a logger instance with a filename.new Logger(options: Logger.Options)
Creates a logger instance with options.Logger.Options
ttl?: number
How much time should the output buffer keep contents before flushing, default value is1000
ms.size?: number
How much size should the output buffer keep contents before flushing. This option conflicts withttl
, set only one of them. For data integrity, the real size of flushing data may be smaller than the setting value.filename: string
Writes the contents to the target file.fileSize?: number
The size of the log file, when up to limit, logs will be compressed or sent via e-mail, default value is2097152
bytes (2 Mb). For data integrity, the real size of the file may be smaller than the setting value.dateFormat?: string
The format of prefix date-time value, default value isYYYY-MM-DDTHH:mm:ss
, used by moment.trace?: boolean
The log message should contain the filename and position of where triggers the logging operation,false
by default.toConsole?: boolean
The log should also be output to the console,false
by default.outputLevel?: number
Sets the minimum level of logs that should be output to the file, default value isLogger.Levels.DEBUG
.mail
An object configures a new Mail instance (from sfn-mail) or a existing Mail instance.
Logger.Levels
An enum object contains number from1
-4
DEBUG
INFO
WARN
ERROR
// Simplest way to create a logger:
var logger = new Logger("example.log");
// Or specify more details:
var logger = new Logger({
size: 1024 * 4,
filename: "example.log",
fileSize: 1024 * 1024 * 2,
});
// Send log file contents as an email when the file size up to limit:
var logger = new Logger({
size: 1024 * 4,
filename: "example.log",
fileSize: 1024 * 1024 * 2,
mail: { // must set all neccesary properties.
subject: "Logs of My Website"
host: "smtp.mail.qq.com",
port: 25,
from: "[email protected]",
to: "[email protected]",
auth: {
username: "[email protected]",
password: "xxxxxxxx",
}
}
});
If you don't set the mail
option, when file's size up to limit, its contents
will be compressed to a GZip file and stored in a directory named according to
date.
Familiar Methods
logger.log()
Logs a message on DEBUG level (aliaslogger.debug()
).logger.info()
Logs a message on INFO level.logger.warn()
Logs a message on WARN level.logger.error()
Logs a message on ERROR level.
These methods' usage are exactly the same as console
's, if you're not
familiar with them, please check
https://nodejs.org/dist/latest-v8.x/docs/api/console.html.
Multi-Processing Scenario
Powered by open-channel, this package is safe in multi-processing scenario, and automatically prevent concurrency conflicts.
Close Logger
You can called the method logger.close()
to close the logger, however, due to
using open-channel, which serves an internal IPC server that cannot be closed,
the program will not be able to exit automatically as usual, you have to
explicitly calling process.exit()
in case to terminate the program.
// close the logger and terminate the program.
logger.close(() => {
process.exit();
});