@studimax/logger v1.0.1
@studimax/logger
A logger system with configurable transporters.
Installation
npm install @studimax/logger
# or
yarn add @studimax/loggerDescription
The logger system is a simple and flexible logging system. It is designed to be used in a modular way, so that you can easily add new transports.
2021-12-22 13:23:58.47 <error> Logger.spec.ts:5 (Object.<anonymous>) log1 {"hello":"world"}Usage
import Logger from '@studimax/logger';
const logger = Logger({
transports: [Logger.TRANSPORTS.CONSOLE_LOG(), Logger.TRANSPORTS.DATED_LOG()],
levels: {
extra: {
color: '#ff0000',
level: 1,
},
},
});
logger.info('Hello World!');
logger.extra('Extra!');Logger default options
import Logger from '@studimax/logger';
Logger({
format: '{timestamp}\t<{level.name}>\t{file}:{line}\t({method})\t{message} {metadata}', //see format docs
dateFormat: 'YYYY-MM-DD HH:mm:ss.SS', // use fecha to format date
logFolder: 'logs',
logHistory: 100, // keep 100 logs
transports: [], // by default, no transports
transportTimeout: 1000, // timeout for transports
levels: {}, // by default, use default levels but can be overridden
})Default Levels
The color is used to display the level name in the console.
| Description | Level | Tag | Color |
|---|---|---|---|
| Trace | 0 | trace | #0099ff |
| Debug | 1 | debug | #00cc99 |
| Info | 2 | info | #00cc30 |
| Warn | 3 | warn | #ffcc00 |
| Error | 4 | error | #ff0000 |
| Fatal | 5 | fatal | #a70000 |
Custom Levels
const levels = {
myCustomTag: {
color: '#ff0000',
level: 1
}
}Custom Format
Format is a string that can contain the following placeholders:
{timestamp}: the timestamp of the log formatted with thedateFormatoption{level}: level object containingname,levelandcolor{file}: the file where the log was called{line}: the line where the log was called{method}: the method where the log was called{message}: the message of the log{metadata}: the metadata object passed to the log
You can use the dot notation . to access nested properties. For example, {metadata.foo} will access the foo property of the metadata object.
See @studimax/ts package for more information.
Transporters
This package provides the following transporters:
CONSOLE_LOG
This transporter logs to the console.
DATED_LOG
This transporter logs to a file with a date prefix. The file is created if it doesn't exist. This transporter implements the FIFO strategy, first log is the first to be written.
NAMED_LOG
This transporter logs to a file with a name prefix.
Custom Transporter
You can create your own transporters by creating an async function.
async function MyCustomTransporter(data: Data, options: TransportOptions) {
if(await options.transportReady){
// do something when the same previous logs transport has been resolved.
console.log(data.message);
}
}TransportOptions extends LoggerOptions ans add more properties:
ready: a promise that is resolved when all previous logs transports have been resolved.transportReady: a promise that is resolved when the same previous logs transport has been resolved.