我在哪里可以使用Express框架中的Node.JS保存日志文件?

时间:2014-03-21 19:49:25

标签: javascript node.js

我有一个node.js应用程序,我使用Winston跟踪一些日志记录。除了客户端之外,我想要一个服务器端日志。在快速框架中,它只是公共文件夹中可供客户端访问的文件,如果我想做客户端用户无法访问的服务器端日志,我可以在公共文件之外创建一个文件夹吗?

1 个答案:

答案 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'
};