我试图在代码中设置log4js节点。由于我想从不同的.js文件中写入同一个日志文件,所以我将其设置为根据文件外部文件。
const appSettings = {
log4js: {
traceLogConfig: {
appenders: {
fileAppender: { type: 'file', filename: `./logs/${settings.custid}/${Date.now()}.log`},
consoleAppender: { type: 'console' }
},
categories: {
default: { appenders: ['fileAppender', 'consoleAppender'], level: 'trace'}
}
}
}
};
module.exports = appSettings;
在档案中:
import log4js from 'log4js';
//Setting up logger
const { traceLogConfig } = require('./logs').log4js;
log4js.configure(traceLogConfig);
const logger = log4js.getLogger();
但是,当我试图运行代码时,会收到以下错误消息:
const { traceLogConfig }=需要量(‘./log’).log4js;^ ReferenceError:在ES模块作用域中没有定义require,您可以使用import来代替这个文件被视为ES模块,因为它有一个'.js‘文件扩展名,'package.json’包含"type":“package.json”。若要将其视为CommonJS脚本,请将其重命名为使用“.cjs”文件扩展名。
我不知道如何将此结构(const { traceLogConfig }=需要量(‘./logs’).log4js;)转换为ES6模块。我试过:
import {traceLogConfig} from './logs'.log4js
import {traceLogConfig} from './logs.log4js'
import {traceLogConfig} from './logs.js.log4js'
通常,visual代码会给我一盏小灯,它展示了如何自动将其转换为与ES6模块兼容的代码,但这一次它没有出现。
发布于 2021-05-26 02:20:57
好吧,我找到答案了。首先需要导入整个文件,如下所示:
import appSettings from '../logs.js';
然后,您需要在调用它时引用特定设置:
log4js.configure(appSettings.log4js.traceLogConfig);
https://stackoverflow.com/questions/67685442
复制相似问题