javascript - 使用 log4js 运行 logger.js 时 logger.setLevel 不是函数

标签 javascript node.js express logging log4js-node

我正在尝试使用 log4js 创建日志文件。完成所有配置后运行 Node app.js 时,我收到以下错误。

错误:

TypeError: logger.setLevel is not a function
at Object.<anonymous> (E:\Angular\logging_project\routes\logger.js:14:20)
at Object.<anonymous> (E:\Angular\logging_project\routes\index.js:3:13)

请查看我的代码。

logger.js

  var log4js = require('log4js');
  log4js.configure({
     appenders: {
        console: { type: 'console' },
        filelog: { type: 'file', filename: "c://test.log", category: 'my_project' }
      },
      categories: {
         file: { appenders:['filelog'],level:'error'},
         another: {appenders: ['console'],level: 'trace'},
         default: {appenders: ['console','filelog'],level: 'trace'}
      }
   });
  var logger  = log4js.getLogger('my_project');
        logger.setLevel('DEBUG');
        Object.defineProperty(exports, "LOG", {
                    value:logger,
 })

index.js:

var express = require('express');
var router = express.Router();
var logger= require('./logger.js');
var log=logger.LOG;
/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

exports.index = function(req, res){
log.debug("testing the debug log here....................");
log.error("testing the error log here....................");
log.info("testing the info log here....................");
log.trace("testing the trace log here....................");
  res.render('index', { title: 'Express' });
};

module.exports = router;

app.js

var express = require('express');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var log = require('./routes/logger');
var app = express();

app.use(logger('dev'));
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/users', usersRouter);

//use logger
app.use(log4js.connectLogger(log, { level: log4js.levels.DEBUG }));

app.set('port', process.env.PORT || 3000);
var server = app.listen(app.get('port'), function() {
console.log('node Express server listening on port ' + server.address().port);
});

module.exports = app;

我是 Node js 新手,这是我第一次使用 Node js 创建日志文件。任何人请帮助我解决这个问题。如果我能得到一个工作代码,那就更好了。我一整天都被这个问题困扰着。

最佳答案

您可以使用以下代码设置记录器级别:

logger.level = 'DEBUG';

关于javascript - 使用 log4js 运行 logger.js 时 logger.setLevel 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55062250/

相关文章:

javascript - 如何延迟页面渲染直到从 api 收到数据

javascript - jquery:如何更改整个 css 类的属性?

mysql - Sequelize 获取查询的所有数据而不执行我的条件 'where'

node.js - 表达多个静态路由正则表达式解析

node.js - 将前端 native websocket 客户端连接到 Node.js Socket.io 服务器

javascript - 三个 JS 圆柱体纹理失真

javascript - Lint 检查 Javascript 相等性是否被误用作 IntelliJ 中的赋值

node.js - 当服务器位于主进程和子进程上时,集群 http 服务器陷入困境

javascript - 如何使用 request.query 获取变量

javascript - 如何在客户端(AngularJS)加密密码,将其发送到服务器(expressJS)并在服务器上解密?