Log4j2 JSONLayout关闭“]”和“,”分隔符问题

问题描述 投票:0回答:1

我的应用程序以angular 7和spring boot 2运行。每次用户与应用程序进行交互时,我需要将一些数据存储在json文件中(单击某些按钮或链接)。 json应该看起来像这样(只是一个例子):


[
 "event": {

   userid : 1
   ipAddress : x.x.x.x
   lastConnectionDateTime : ...,
   action : "click on link 1"
 },
 "event": {

   userid : 2
   ipAddress : y.y.y.y
   lastConnectionDateTime : ...,
   action : "click on button THE_BUTTON" 
 },
 ...
]

我使用JSONLayout配置了log4j2.xml,并且工作正常。但是我有两个问题:

1-结尾的“]”不存在。滚动完成后似乎添加了它(stackoverflow.com/questions/45792298/…)这非常令人讨厌,因为我的json日志被认为是有效的,原因是它已被另一个被splunk的工具读取。我还没有找到结束“]”的方法。有没有办法始终在末尾加上“]”?

2-第一次启动服务器时,在元素之间添加逗号“,”分隔符,但是当我重新启动服务器时,它不会第一次添加逗号,然后在插入第一个元素后再次添加逗号像这样:

[
{"thread":"main","level":"INFO","loggerName":"JSON_EVENT_LOGGER", "contextMap":{"action":"click link 1","ipAddress":"127.0.0.1","lastConnectionDateTime":"...timestamp...","userid":"1"}}
, 
{"thread":"main","level":"INFO","loggerName":"JSON_EVENT_LOGGER", "contextMap":{"action":"click link 1","ipAddress":"127.0.0.1","lastConnectionDateTime":"...timestamp...","userid":"1"}}
**// HERE NO COMMA AFTER RESTART SERVER :(**
{"thread":"main","level":"INFO","loggerName":"JSON_EVENT_LOGGER", "contextMap":{"action":"click link 1","ipAddress":"127.0.0.1","lastConnectionDateTime":"...timestamp...","userid":"1"}}

这是我的配置:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" packages="com.example.demo">
    <Properties>
        <Property name="filename">${sys:logiza.log.fonctionnel.file.path}</Property>
    </Properties>

    <Appenders>
        <RollingFile name="FileAppender" fileName="${filename}"
                     filePattern="logs/log4j2-demo-%d{yyyy-MM-dd}-%i.log">
            <JsonLayout eventEol="true" complete="true" compact="true" properties="true">
            </JsonLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="7" />
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
    </Appenders>

    <Loggers>
        <Logger name="JSON_EVENT_LOGGER" level="ALL" additivity="false">
            <Appenderref ref="FileAppender"/>
        </Logger>
    </Loggers>
</Configuration>

谢谢你。

java json spring log4j log4j2
1个回答
0
投票

我正面临着同样的问题,您是否已解决?

© www.soinside.com 2019 - 2024. All rights reserved.