在这个简单的应用程序中,两个不同的文件head
和head . catMaybes $ [compute x y, compute (x+2) (y+2), compute (x+4) (y+4)]
导入foo.js
来创建bar.js
子记录器。
问题::Logger.js
可以正常工作,但是bunyan
在查找foo.js
中定义的bar.js
时遇到了问题。这似乎是由于固定了MyService.log
的相对路径,而Logger.js
和MyService.log
相对于项目根目录位于不同的目录级别。
创建foo.js
子记录器的更好方法是什么?
bar.js
/src/lib/Logger.js
bunyan
/src/foo/foo.js
.
├── lib
| └── Logger.js
├── foo
| └── foo.js
├── bar.js
/src/bar.js
const bunyan = require('bunyan')
const logger = bunyan.createLogger({
name: 'MyService',
streams: [
{
stream: process.stdout,
level: "info"
},
{
type: 'rotating-file',
path: '../logs/MyService.log',
period: '1w',
count: 100,
level: "debug"
}
]
})
module.exports = {
getChildLogger(componentName) {
return logger.child({
component: componentName
})
}
}
答案 0 :(得分:2)
请尝试使用路径模块(核心)使用绝对文件路径,而不是相对路径。
const path = require('path');
const loggerPath = path.join(__dirname, '..', 'logs', 'MyService.log');
答案 1 :(得分:0)
我将使用resolve
模块中的path
方法。从this question中选择的答案突出了resolve
方法的优势:
如果不提供指定根目录的路径,则 提供给resolve函数的路径会附加到当前 工作目录。
所以我将路径指定为:
const { resolve } = require('path');
const log = resolve('logs', 'MyService.log');