2014-11-20 107 views
0

我想仅将所有信息记录在一个文件中。我使用pm2“0.12.1”和“winston”:“0.8.3”。Nodejs将日志与PM2和Winston合并

这里是我的温斯顿

var winston = require('winston'); 

var customLoggerLevels = { 
    levels: { 
    trace: 0, 
    debug: 1, 
    info: 2, 
    warn: 3, 
    error: 4 
    }, 
    colors: { 
    trace: 'blue', 
    debug: 'green', 
    info: 'grey', 
    warn: 'yellow', 
    error: 'red' 
    } 
}; 

var logger = new (winston.Logger)({ 
    levels: customLoggerLevels.levels 
}); 

的代码和我的一块ecosystem.json

"apps" : [ 
    { 
     "name"  : "myapp", 
     "script" : "server.js", 
     "instances" : "1", 
     "err_file" : "myapp.log", 
     "out_file" : "myapp.log", 
     "env": { 
     "NODE_ENV": "development", 
     "PORT": 4000 
     }, 
     "env_production" : { 
     "NODE_ENV": "production", 
     "PORT": 4000 
     } 
    } 
    ] 

这不是为我工作的。我不明白为什么pm2仍然创建两个文件,一个用于出错,一个用于出错。另外我想知道是否有可能将文件放入另一个生产目录中。

谢谢

回答

3

您可以指定在out_fileerror_file密钥的文件路径。 默认情况下,pm2将stdout输出重定向到与stderr输出不同的文件。 如果您只想要一个日志文件,那么只需使用相同的路径输出。

ecosystem.json应该是这样的:

"apps" : [ 
    { 
     "name"  : "myapp", 
     "script" : "server.js", 
     "instances" : "1", 
     "error_file" : "/var/log/myapp.log", 
     "out_file" : "/var/log/myapp.log", 
     "env": { 
     "NODE_ENV": "development", 
     "PORT": 4000 
     }, 
     "env_production" : { 
     "NODE_ENV": "production", 
     "PORT": 4000 
     } 
    } 
    ] 

还存在合并每个实例(这不是合并了/错误)的日志选项。要使用它,请指定merge_logs: true。它还会允许您在日志文件名中输入get rid of the pm2 id

+0

谢谢你,完美的工作,我唯一不能做的就是把日志文件放在环境中(在每种情况下管理不同的路径) – agusgambina 2014-11-25 16:46:10

+1

有趣的是,你可能想在[github]上触发一个问题( https://github.com/Unitech/PM2)作为一个功能请求,并带有您想要的示例;)。 – soyuka 2014-11-25 21:15:24