[英]Winston-logger not working in modules
我已經制作了一個Winston模塊,可以將其導入所有需要記錄的模塊。 但是,它只會在我的應用程序入口點(我開始的那個)中記錄入口。
我的實施有什么錯?
logger.js(溫斯頓模塊)
var winston = require('winston');
var logger = new (winston.Logger)({
transports: [
new winston.transports.File({
filename: __dirname + '/logger.log',
json: false,
timestamp: function () {
return new Date()
}
})
],
exceptionHandlers: [
new winston.transports.File({ filename: __dirname + '/exceptions.log', json: false })
],
exitOnError: false
});
module.exports = logger;
主節點文件(此處記錄正常):
var logger = require('./utils/logger');
其他需要記錄的模塊(記錄不起作用,沒有錯誤消息)
var logger = require('../utils/logger');
logger.error('Error to log')
我有什么想法我做錯了嗎?
我已嘗試根據您的要求創建一個樣本。 可能這可能有助於找到您的問題。
Package.json
{
"name": "winston",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"express": "4.16.2",
"http": "0.0.0",
"nodemon": "1.15.1",
"winston": "2.4.0"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
index.js
const express = require('express');
const app = express();
const logger = require("./logger");
app.listen(3000, () => {
logger.log("info", 'Example app listening on port 3000!');
const data = require("./data")(app);
});
logger.js
var winston = require('winston');
var logger = new (winston.Logger)({
transports: [
new winston.transports.File({
filename: __dirname + '/logger.log',
json: false,
timestamp: function () {
return new Date()
},
handleExceptions: true,
humanReadableUnhandledException: true,
})
],
exceptionHandlers: [
new winston.transports.File({ filename: __dirname + '/exceptions.log', json: false })
],
exitOnError: false
});
module.exports = logger;
module.exports.stream = {
write: function (message, encoding) {
logger.info(message);
}
};
data.js
const logger = require("./logger");
logger.log("info", 'executes data.js');
module.exports = ((app) => {
app.get('/', (req, res) => {
logger.log("info", "Default route executes");
res.send("hello world from data file");
});
app.get('/hello', (req, res) => {
logger.log("info", "hello route executes");
res.send("hello route executes");
});
app.use(function (err, req, res, next) {
logger.log("info", "error routing called");
logger.log("error", err);
if (err.name === 'UnauthorizedError') {
res.status(401).json({ status: 0, code: 401, type: "unauthorised", message: err.name + ": " + err.message });
} else {
res.status(404).json({ status: 0, code: 404, type: "ENOENT", message: "file not found" });
}
});
return app;
});
在上面的代碼中,您似乎應該將logger.log與添加第一個參數一起用作日志類型。 有6個級別的日志。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.