Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 创建bunyan子记录器时出现路径问题_Javascript_Node.js_Logging_Npm_Bunyan - Fatal编程技术网

Javascript 创建bunyan子记录器时出现路径问题

Javascript 创建bunyan子记录器时出现路径问题,javascript,node.js,logging,npm,bunyan,Javascript,Node.js,Logging,Npm,Bunyan,在这个简单的应用程序中,两个不同的文件foo.js和bar.js导入Logger.js以创建bunyan子记录器 问题:foo.js工作正常,但bar.js在查找Logger.js中定义的MyService.log时遇到问题。这似乎是由于到MyService.log的相对路径是固定的,而foo.js和bar.js相对于项目根目录位于不同的目录级别 创建bunyan子记录器的更好方法是什么 . ├── lib | └── Logger.js ├── foo | └── foo.js ├──

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

问题:
foo.js
工作正常,但
bar.js
在查找
Logger.js
中定义的
MyService.log
时遇到问题。这似乎是由于到
MyService.log
的相对路径是固定的,而
foo.js
bar.js
相对于项目根目录位于不同的目录级别

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

.
├── lib
|   └── Logger.js
├── foo
|   └── foo.js
├── bar.js
/src/lib/Logger.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
        })
    }
}
const log = require('../lib/Logger').getChildLogger('foo')
log.info('Foo')
const log = require('./lib/Logger').getChildLogger('foo')
log.info('Bar')
/src/foo/foo.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
        })
    }
}
const log = require('../lib/Logger').getChildLogger('foo')
log.info('Foo')
const log = require('./lib/Logger').getChildLogger('foo')
log.info('Bar')
/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
        })
    }
}
const log = require('../lib/Logger').getChildLogger('foo')
log.info('Foo')
const log = require('./lib/Logger').getChildLogger('foo')
log.info('Bar')

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


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


我将使用
path
模块中的
resolve
方法。从中选择的答案突出了
resolve
方法的优点:

如果未提供指定根目录的路径,则 给定给resolve函数的路径将附加到当前 工作目录

因此,我将指定路径为:

const { resolve } = require('path');

const log = resolve('logs', 'MyService.log');

我将使用
path
模块中的
resolve
方法。从中选择的答案突出了
resolve
方法的优点:

如果未提供指定根目录的路径,则 给定给resolve函数的路径将附加到当前 工作目录

因此,我将指定路径为:

const { resolve } = require('path');

const log = resolve('logs', 'MyService.log');