首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建bunyan子日志时的路径问题

创建bunyan子日志时的路径问题
EN

Stack Overflow用户
提问于 2018-10-13 17:42:20
回答 2查看 532关注 0票数 0

在这个简单的应用程序中,两个不同的文件foo.jsbar.js导入Logger.js来创建一个bunyan子记录器。

问题: foo.js工作得完美无缺,但是bar.js在找到Logger.js中定义的MyService.log时遇到了问题。这似乎是由于固定了MyService.log的相对路径,而foo.jsbar.js驻留在相对于项目根目录的不同目录级别。

创建bunyan子记录器的更好方法是什么?

代码语言:javascript
复制
.
├── lib
|   └── Logger.js
├── foo
|   └── foo.js
├── bar.js

/src/lib/Logger.js

代码语言:javascript
复制
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
        })
    }
}

/src/foo/foo.js

代码语言:javascript
复制
const log = require('../lib/Logger').getChildLogger('foo')
log.info('Foo')

/src/bar.js

代码语言:javascript
复制
const log = require('./lib/Logger').getChildLogger('foo')
log.info('Bar')
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-13 18:24:28

而不是相对路径,尝试使用使用路径模块(核心)的绝对文件路径。

代码语言:javascript
复制
const path = require('path');

const loggerPath = path.join(__dirname, '..', 'logs', 'MyService.log');
票数 3
EN

Stack Overflow用户

发布于 2018-10-13 18:40:20

我将使用来自resolve模块的path方法。this question选择的答案突出了resolve方法的优势:

如果没有提供指定根目录的路径,那么给解析函数的路径就会附加到当前的工作目录中。

因此,我会将路径指定为:

代码语言:javascript
复制
const { resolve } = require('path');

const log = resolve('logs', 'MyService.log');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52795640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档