Introduction to Chain Logger
The Chain Logger is a powerful logging utility designed to streamline the process of application logging, making it easier to troubleshoot, monitor, and improve your applications. Below, we will explore dozens of useful APIs provided by Chain Logger along with practical code snippets and an example application.
Getting Started
To get started with Chain Logger, you need to install the library:
npm install chain-logger
Basic Usage
Let’s create a basic logging setup:
const { Logger, FileTransport, ConsoleTransport } = require('chain-logger');
const logger = new Logger({
transports: [
new ConsoleTransport(),
new FileTransport('app.log')
]
});
logger.info('Chain Logger Initialized.');
Custom Log Levels
Define custom log levels to suit your needs:
const { Logger, ConsoleTransport } = require('chain-logger');
const customLevels = {
levels: {
trace: 0,
debug: 1,
info: 2,
warn: 3,
error: 4,
},
colors: {
trace: 'magenta',
debug: 'blue',
info: 'green',
warn: 'yellow',
error: 'red',
}
};
const logger = new Logger({
levels: customLevels.levels,
transports: [new ConsoleTransport({ colorize: true })],
colors: customLevels.colors
});
logger.trace('This is a trace message'); logger.debug('This is a debug message'); logger.info('This is an info message'); logger.warn('This is a warning'); logger.error('This is an error message');
Filtering Logs
Filter logs based on log levels:
const { Logger, ConsoleTransport } = require('chain-logger');
const logger = new Logger({
transports: [new ConsoleTransport({ level: 'warn' })]
});
logger.info('This will not be logged'); logger.warn('This will be logged');
Logging with Metadata
Add metadata to your logs for enhanced context:
const { Logger, ConsoleTransport } = require('chain-logger');
const logger = new Logger({
transports: [new ConsoleTransport()]
});
logger.info('User logged in', { userId: '12345' });
Chaining Loggers
Combine multiple transports for different log destinations:
const { Logger, ConsoleTransport, FileTransport } = require('chain-logger');
const logger = new Logger({
transports: [
new ConsoleTransport(),
new FileTransport('combined.log')
]
});
logger.info('Log to both console and file.');
Rotating Logs
Implement log rotation to manage log files efficiently:
const { Logger, FileTransport } = require('chain-logger'); const { DailyRotateFile } = require('winston-daily-rotate-file');
const logger = new Logger({
transports: [
new DailyRotateFile({
filename: 'application-%DATE%.log',
datePattern: 'YYYY-MM-DD',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d'
})
]
});
logger.info('Daily log rotation configured.');
Configuration Example
Here is an example configuration to illustrate all the use cases:
const { Logger, ConsoleTransport, FileTransport, HttpTransport } = require('chain-logger');
const logger = new Logger({
transports: [
new ConsoleTransport({ level: 'debug', colorize: true }),
new FileTransport('application.log', { level: 'info' }),
new HttpTransport({ endpoint: 'http://example.com/logs', level: 'error' })
]
});
logger.info('Application started'); logger.debug('Debugging info'); logger.error('An error occurred', { error: new Error('Sample Error') });
Application Example
Here is a complete application example using Chain Logger:
const express = require('express'); const { Logger, ConsoleTransport, FileTransport, HttpTransport } = require('chain-logger');
const app = express();
const logger = new Logger({
transports: [
new ConsoleTransport({ level: 'debug' }),
new FileTransport('server.log', { level: 'info' }),
new HttpTransport({ endpoint: 'http://example.com/logs', level: 'error' })
]
});
app.use((req, res, next) => {
logger.info('Incoming request', { method: req.method, url: req.url });
next();
});
app.get('/', (req, res) => {
logger.debug('Handling / route');
res.send('Hello, World!');
});
app.use((err, req, res, next) => {
logger.error('Server error', { error: err });
res.status(500).send('Internal Server Error');
});
app.listen(3000, () => {
logger.info('Server started on port 3000');
});
By effectively utilizing the Chain Logger, you can improve your application’s logging capabilities, making it easier to track, debug, and maintain.
Hash: 5ab745dab3f9043261e888616b52384a6fe31dcb3488a08964841ba920c5adc5