使用log4js编写日志消息时添加动态值

时间:2018-12-16 19:20:35

标签: node.js log4js-node

我想向与log4js一起使用的模式添加动态属性。 我正在使用一些自定义模式,如下所示: “%d {}%-6p [%thread]%c [%x {context}]:%m%n%r”

Context是我要设置的动态值,它为服务器端的每个用户生成了一些唯一的ID。 在使用“令牌”和“上下文”属性创建log4js配置时,有一种添加动态值的方法。 但是在这种情况下,应该在日志创建过程中设置值。

有没有一种方法可以添加一些在实际消息写入日志时而不是在配置阶段设置的动态属性?

现在我正在做这样的事情:

        log4js.configure(
        {
          appenders: { "file": { "type": "file", "filename": "service.log", "maxLogSize": 102400, "backups": 5,  "category": "com.nextinsurance",  "layout": { "type": "pattern", "pattern": "%d{} %-6p[%thread] %c [%x{context}]: %m%n%r",  "tokens" : {context: function(logEvent){ return getContextFromData(logEvent) } } } }, "console" : {"type": "console"} },
          categories: { "default": { "appenders": ["file", "console"], "level": "info" } }
        }
       );

但是要在写入日志时注入该值,例如

logger.info(Message, {context: context_value})

1 个答案:

答案 0 :(得分:0)

您可以使用logEvent数据属性来获取上下文。 logEvent数据属性包含在日志事件中传递的args数组。 这是示例代码:

Endpoints.aggregate([
   {
      $project: {
         items: {
            $filter: {
               input: "$commands",
               as: "item",
               cond: { 
                   $in: [ 
                      "$$item._id",
                      ["5d7b4ef6f691b71b5097e9cf", "5d7b4ef6f691b71b5097e9cf"]
                   ]
              }
            }
         }
      }
   }
])