2017-10-10 82 views
0

我在溫斯頓做了兩次錯誤和警告傳輸,據說寫入文件。現有的控制檯日誌傳輸工作正常,我沒有檢查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

回答

1

請創建一個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... ***');