当前位置: 首页 > 知识库问答 >
问题:

Log4j2 JSONLayout未附加结束(])方括号

翁阳曜
2023-03-14

这是我的log4j2。xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="OFF">
    <Appenders>
        <File name="JsonFile" fileName="logs/myLog.log" immediateFlush="true" append="false">
            <JSONLayout complete="true" charset="UTF-8" compact="false" eventEol="false" properties="true"/>
        </File>
    </Appenders>
    <Loggers>
        <Root level="all" includeLocation="true">
            <AppenderRef ref="JsonFile"/>
        </Root>
    </Loggers>
</Configuration>

输出如下所示:

[
{
  "timeMillis" : 1503303149998,
  "thread" : "Restlet-343114711",
  "level" : "INFO",
  "loggerName" : "my.logger.name",
  "message" : "Import completed successfully",
  "endOfBatch" : false,
  "loggerFqcn" : "org.apache.logging.log4j.spi.AbstractLogger",
  "contextMap" : {
    "class" : "my.package.Class",
    "method" : "getProgress",
    "user" : "myUser"
  },
  "threadId" : 45,
  "threadPriority" : 5
}

缺少右方括号。如何配置log4j2以添加结束标记?

共有1个答案

任飞鸣
2023-03-14

对于其他可能在控制台附加器方面面临此问题的人,并且希望log4j在执行完成时附加](例如在CLI的情况下)。

您可以停止appender,它将使log4j添加结束符

// Notice casting from spi.LoggerContext to core.LoggerContext    
LoggerContext logContext = (org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false);
Map<String, LoggerConfig> map = logContext.getConfiguration().getLoggers();
map.get(LOGGER_NAME).getAppenders().get(APPENDER_NAME).stop();

如果appender附加到根记录器,则使用空字符串"作为变量LOGGER_NAME

 类似资料:
  • 问题内容: 这不会编译,以下方法只会写出我添加的最新项目,而不会追加到以前的条目中。我究竟做错了什么? 问题答案: 调用方法的事实并不意味着它会更改正在打开的文件的模式。 你还需要以附加模式打开文件: 另请注意,文件将以系统默认编码写入。并非总是如此,它可能会导致互操作性问题,你可能需要明确指定文件编码。

  • 此约束是否在分数计算器()中。它是否可以检查一个解决方案中的进程组是否被分配到相同的CPU并给它打分? 有没有其他更好的方法,比如使用ValueSelector? 并且我在缺省情况下得到了一个解决方案,即使进程不能分配给CPU(因为限制)。计划者就是这样工作的吗?

  • 6.7.1.BuildExcerpts (产生文本摘要和高亮) 原型:function BuildExcerpts ( $docs, $index, $words, $opts=array() ) 该函数用来产生文档片段(摘要)。连接到searchd,要求它从指定文档中产生片段(摘要),并返回结果。 $docs为包含各文档内容的数组。$index为包含索引名字的字符串。给定索引的不同设置(例如字符

  • 一切正常。但Logcat中显示了一些错误。 E/RecyclerView:未附加适配器;跳过布局 E/RecyclerView:未附加适配器;跳过布局 我的activity代码: 我读过与同一问题有关的其他问题,但都没有帮助。请帮帮我

  • 问题内容: 使用输出 当ajax调用完成时,此代码将触发。任何想法为什么这样做? 假设数据变量是有效的JSON对象。 问题答案: 尽管jQuery提供了抽象,但是您正在操作DOM中的 元素 ,而不是HTML源代码中的标签。 是的简写。 您需要将表行附加到表,而不是容器(同样,单元格也需要添加到行)。

  • 完结 感谢你一路支持,在我开始时完全没有想到这个系列会这么长,会花这么多时间完成,但是创建这个系列的过程使我非常享受,也希望你喜欢它. 既然我已经完成了,我会进一步考虑将其转化为PDF格式.但是,不保证. 最后,我想总结一些帮助你继续学习 Twisted 的建议. 进一步阅读 首先,我建议阅读Twisted的 在线文档. 虽然它备受指责,但我觉得这总比饱受赞誉要好. 如果你希望使用Twisted进