我有一个node.js应用程序,我使用Winston跟踪一些日志记录。除了客户端之外,我想要一个服务器端日志。在快速框架中,它只是公共文件夹中可供客户端访问的文件,如果我想做客户端用户无法访问的服务器端日志,我可以在公共文件之外创建一个文件夹吗?
答案 0 :(得分:2)
确切地说,只需将日志文件指向/public
文件夹以及app.use(express.static(path.join(__dirname, 'public_folder')));
您可以配置winston
传输将通过设置其正确的属性来记录文件,例如,在file
传输中您必须设置filename
选项。
以下是config.js
文件,我为日志记录活动(服务器端和客户端请求)加载了所有配置:
<强> config.json 强>
{
"transports": {
"console": {
"enabled": true,
"colorize" : true,
"timestamp": false
},
"file" : {
"enabled": true,
"colorize" : true,
"filename" : "/var/log/vifros.log",
"timestamp": true
},
"mongodb": {
"enabled": true,
"db": "vifros"
}
}
}
编辑LOGGING-logger.js - (见评论):
var winston = require('winston');
require('winston-mongodb').MongoDB; // Monkeypatch Winston for MongoDb transport.
var config = require('../config');
/*
* Enable initially all transports for initial app startup and then disable them according to settings.
*
* Add console transport.
*/
winston.remove(winston.transports.Console); // To being able to reconfigure it.
if (config.logging.transports.console.enabled) {
winston.add(winston.transports.Console, config.logging.transports.console);
}
/*
* File transport.
*/
if (config.logging.transports.file.enabled) {
winston.add(winston.transports.File, config.logging.transports.file);
}
/*
* Enable saving logs to mongodb.
*/
if (config.logging.transports.mongodb.enabled) {
winston.add(winston.transports.MongoDB, config.logging.transports.mongodb);
}
exports.logger = winston;
exports.tags = {
init : 'init',
api_request: 'api_request',
db : 'db',
validation : 'validation',
cross_rel : 'cross_relationship',
os : 'os'
};