Phi*_*ien 8 logging node.js bunyan
我正在开发一个包含多个模块的节点应用程序.我现在正在尝试正确设置日志记录(应该在开始时这样做),并考虑使用Bunyan.
logger如本答案所示,拥有一个导出然后由其他模块所需的单个模块或者logger直接在每个模块中定义一个新的bunyan 实例并相应地配置它会更好吗?为了重复使用,我想象前者,但我不知道这是否会受到限制.
如果我有一个定义的单一记录器
var bunyan = require('bunyan');
var logger = bunyan.createLogger({
name: "filter",
streams: [
{
level: 'info',
stream: process.stdout
},
{
level: 'error',
path: '../error.log'
},
{
level: 'debug',
path: '../debug.log'
}
]
});
module.exports = logger;
Run Code Online (Sandbox Code Playgroud)
然后,使用它的所有模块也将使用名称进行日志记录filter,而每个模块记录到更能代表自身的名称可能更有意义.
另外,我认为所有模块都应该将错误记录到同一个日志文件中,例如systemErr.log(以便更好地概述),还是应该记录到自己的错误日志,例如module1Err.log,module2Err.log?
Pet*_*ons 17
拥有一个导出并由其他模块所需的记录器模块会更好吗?
是的.越简单越好.这也避免了样板重复日志设置.
另外,我认为所有模块都应该将错误记录到同一个日志文件中,例如systemErr.log(以便更好地概述),还是应该记录到自己的错误日志,例如module1Err.log,module2Err.log?
整个应用程序的一个文件.因为bunyan使用ndjson格式,所以在需要时过滤主日志文件很容易.我建议直接记录的简单性和灵活性,stdout并允许部署环境决定应该去哪里.这对于您可能不需要或不想要磁盘上的日志文件的开发也很方便.工具喜欢upstart和multilog可以适当写你的标准输出记录到磁盘和照顾日志旋转的为您服务.
一个额外的小费.在本地开发时,我运行我的应用程序,如下所示:
node-dev --inspect server.js |\
tee -a log/app.ndjson.log | bunyan -o short
Run Code Online (Sandbox Code Playgroud)
node-dev 我更改代码时自动重启--inspect 使用chrome devtools启用我可以附加的调试器tee将stdout复制到磁盘,所以如果我想回去查看日志,我可以,但我不希望在终端中看到完整的ndjson记录bunyan -o short 给我漂亮的打印输出到我的终端,这是我想要的本地开发| 归档时间: |
|
| 查看次数: |
4076 次 |
| 最近记录: |