Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict';
- const { createLogger, format, transports } = require('winston');
- require('winston-daily-rotate-file');
- const fs = require('fs');
- const path = require('path');
- const os = require('os');
- const env = process.env.NODE_ENV || 'development';
- const logDir = __dirname+ '/verbose';
- // Create the log directory if it does not exist
- if (!fs.existsSync(logDir)) {
- fs.mkdirSync(logDir);
- }
- const dailyRotateFileTransport = new transports.DailyRotateFile({
- filename: `${logDir}/%DATE%-charcoal-eats.log`,
- datePattern: 'YYYY-MM-DD',
- zippedArchive: true,
- maxSize: '500m',
- maxFiles: '10d',
- format: format.combine(format.json())
- });
- var errorMeta = {
- hostname: os.hostname(),
- pid: process.pid,
- memory: process.memoryUsage(),
- uptime: process.uptime(),
- env: process.env.NODE_ENV || 'development',
- filename: path.basename(process.mainModule.filename)
- };
- const logger = createLogger({
- // change level if in dev environment versus production
- level: env === 'development' ? 'debug' : 'info',
- format: format.combine(
- format.errors({ stack: true }),
- format.label({ label: errorMeta }),
- format.timestamp({
- format: 'YYYY-MM-DD HH:mm:ss'
- }),
- format.json()
- ),
- transports: [
- new transports.Console({
- level: 'info',
- format: format.combine(
- format.colorize(),
- format.printf(
- info =>
- `${info.timestamp} ${info.level} ${info.label.env} [${info.label.filename}]: ${JSON.stringify(info.message)} `
- )
- ),
- handleExceptions: true
- }),
- dailyRotateFileTransport
- ]
- });
- logger.exitOnError = false;
- function argumentsToString(v){
- // convert arguments object to real array
- var args = Array.prototype.slice.call(v);
- var message = args[0] ? args[0] : '';
- var meta = [];
- if(args.length > 1){
- for(let i=1; i< args.length; i++){
- if (typeof args[i] === "object"){
- meta.push(JSON.stringify(args[i]));
- }
- }
- }
- var str = { message: message, meta: meta.join(' ') };
- return str;
- }
- logger.info = function(){
- logger.log.apply(logger, ["info", argumentsToString(arguments)]);
- }
- logger.warn = function(){
- logger.log.apply(logger, ["warn", argumentsToString(arguments)]);
- }
- logger.error = function(){
- logger.log.apply(logger, ["error", argumentsToString(arguments)]);
- }
- logger.debug = function(){
- logger.log.apply(logger, ["debug", argumentsToString(arguments)]);
- }
- logger.verbose = function(){
- logger.log.apply(logger, ["verbose", argumentsToString(arguments)]);
- }
- module.exports = logger;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement