Server Logger
It helps to work with logs.
How to install
npm i @skazka/server @skazka/server-logger
With yarn:
yarn add @skazka/server @skazka/server-logger
Optionally you can add http server, error handler, router, request and response:
npm i @skazka/server-http @skazka/server-router @skazka/server-error @skazka/server-request @skazka/server-response
With yarn:
yarn add @skazka/server-http @skazka/server-router @skazka/server-error @skazka/server-request @skazka/server-response
How to use
You can use any system for logging. By default it's console.
const App = require('@skazka/server');
const Router = require('@skazka/server-router');
const error = require('@skazka/server-error');
const logger = require('@skazka/server-logger');
const request = require('@skazka/server-request');
const response = require('@skazka/server-response');
const server = require('@skazka/server-http');
const app = new App();
const router = new Router();
app.all([
error(),
logger(),
request(),
response(),
]);
app.then(async (ctx) => {
try {
ctx.logger.info('some text');
// some code with errors
throw new Error('test');
} catch(error) {
ctx.logger.error(error);
}
});
router.get('/data').then(async (ctx) => {
try {
ctx.logger.log('/url');
// some code with errors
throw new Error('test');
} catch(error) {
ctx.logger.error(error);
}
return ctx.response();
});
app.then(router.resolve());
server.createHttpServer(app);
log4js
log4js - a framework to work with node.
npm i log4js
With yarn
yarn add log4js
const log4js = require('log4js');
const log4jsLogger = log4js.getLogger();
app.all([
...
logger(log4jsLogger),
...
]);
winston
Winston - a logger for just about everything.
npm i winston
With yarn
yarn add winston
const winston = require('winston');
const winstonLogger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
//
// - Write to all logs with level `info` and below to `combined.log`
// - Write all logs error (and below) to `error.log`.
//
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});
//
// If we're not in production then log to the `console` with the format:
// `${info.level}: ${info.message} JSON.stringify({ ...rest }) `
//
if (process.env.NODE_ENV !== 'production') {
winstonLogger.add(new winston.transports.Console({
format: winston.format.simple()
}));
}
app.all([
...
logger(winstonLogger),
...
]);