温斯顿不写日志到文件

问题描述:

我在温斯顿做了两次错误和警告传输,据说写入文件。现有的控制台日志传输工作正常,我没有检查pm2 logs并看到日志,但文件传输不保存。温斯顿不写日志到文件

'use strict'; 

const winston = require('winston'); 
const m = require('moment-timezone'); 
let logger = null; 
/** 
* Initializes the logger 
* @param {object} configLogging 
*/ 
module.exports.initialize = function initialize(configLogging) { 
    const dateFormat = 'dddd, MMMM Do YYYY, h:mm:ss a'; 

    logger = new winston.Logger({ 
    transports: [ 
     new (winston.transports.Console)({ 
     name: 'info-console', 
     level: configLogging.level, 
     colorize: true, 
     timestamp: function() { return m.utc().format(dateFormat); } 
     }), 
     new (winston.transports.File)({ 
     name: 'warning-file', 
     filename: 'warning-file.log', 
     level: 'warning' 
     }), 
     new (winston.transports.File)({ 
     name: 'error-file', 
     filename: 'error-file.log', 
     level: 'error' 
     }) 
    ] 
    }); 

    logger.info('Starting logging service'); 
}; 

/** 
* Gets the logger instance 
* @returns {LoggerInstance} winLogger 
*/ 
module.exports.get = function get() { 
    return logger; 
}; 
+1

我会建议登录手动创建具有写入权限的error-file.log&warning-file.log文件来测试Winston日志记录。如果它有效,那么这不是Winston问题,对当前用户的应用程序目录提供正确的读/写/执行访问权限。 –

+0

我在我的本地计算机上测试过记录器,它工作正常,但由于某种原因,它不能在服务器上运行@ mandar.gokhale – Bargain23

请创建一个log.js文件,并写入这一切代码

var winston = require('winston'); 
const env = process.env.NODE_ENV; 
const logDir = 'logs'; 
const fs = require('fs'); 

if (!fs.existsSync(logDir)) { 
    fs.mkdirSync(logDir); 
} 

const now = new Date(); 
var logger = new(winston.Logger)({ 
transports: [ 

    new winston.transports.File({ 
     name: 'error-file', 
     filename: './logs/exceptions.log', 
     level: 'error', 
     json: false 
    }), 

    new(require('winston-daily-rotate-file'))({ 
     filename: `${logDir}/-apimodules.log`, 
     timestamp: now, 
     datePattern: 'dd-MM-yyyy', 
     prepend: true, 
     json: false, 
     level: env === 'development' ? 'verbose' : 'info' 
    }) 
], 
exitOnError: false 
}); 

module.exports = logger; 
module.exports.stream = { 
    write: function(message, encoding) { 
    logger.info(message); 
    console.log('message=', message); 
    } 
}; 

对于添加日志,到处使用这个文件需要使用此代码

var logger = require('./path of/log.js'); 
logger.info('*** Requested for First log... ***');