首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >log4j2 StringMapMessage无法获得自定义消息

log4j2 StringMapMessage无法获得自定义消息
EN

Stack Overflow用户
提问于 2018-08-20 12:00:59
回答 1查看 269关注 0票数 0

这是我的StringMapMessage:

代码语言:javascript
运行
复制
object Messages {

final case class SimpleMapMessage(id: String, ai: String, runtime: Long, msg: String) extends StringMapMessage {
   put("id", id)
   put("ai", ai)
   put("runtime", String.valueOf(runtime / (1000 * 1000.0)))

 override def formatTo(buffer: lang.StringBuilder): Unit = 
    buffer.append(msg)
 }

 def event(event: ChartEvent, message: String): Message = {
   val context = event.context
   val runtime = System.nanoTime() - event.started
   SimpleMapMessage(context.id, context.ai, runtime, message)
 }
}

案例课:

代码语言:javascript
运行
复制
case class ChartEvent(...)

在这里我可以称之为:

代码语言:javascript
运行
复制
logger.info(Messages.event(event, "test something"))

但我把它弄出来了

代码语言:javascript
运行
复制
 ... ai="0a1b4118dd954ec3bcc69da5138bdb96" id="fa507bd79f6adf308aedcb7f1daef8c7" runtime="298.690142"

我得不到“测试什么”的信息

更新:

它在2.8.2版本中运行良好。但在2.11.1版本中失败

这里的完整日志:

代码语言:javascript
运行
复制
2018-08-21 02:59:34.988 [INFO] ${map:id} ${map:ai} ${map:runtime} from  classA - ai="0a1b4118dd954ec3bcc69da5138bdb96" id="72f8ec5a1a3073b213d094127aca94c4" runtime="137.950475"
EN

回答 1

Stack Overflow用户

发布于 2018-08-20 23:33:44

这看起来像显示的代码中的一个bug :这个方法/构造函数接受一个msg: String参数,但是没有对它做任何事情,所以它只是被删除.

代码语言:javascript
运行
复制
final case class SimpleMapMessage(
      id: String, 
      ai: String, 
      runtime: Long, 
      msg: String)
   put("id", id)
   put("ai", ai)
   put("runtime", ...
  // need to put msg String also
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51930310

复制
相关文章

相似问题

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