Значение мусора при входе в AWS журналы с использованием log4j2 - PullRequest
1 голос
/ 09 июля 2020

My log4j2. xml файл:

<Configuration status="debug">

<appenders>
    <Console name="LogToConsole">
        <PatternLayout disableAnsi="false" pattern="%style{%d{ISO8601}}{black} %highlight{%-5level }[%style{%t}{bright,blue}] %X{api-interaction-id} %style{%C{1.}}{bright,yellow} : %msg%n%throwable" />
    </Console>
    
    <RollingFile>
        <name>infoLogs</name>
        <fileName>/usr/${logPath}/info_log.log</fileName>
        <filePattern>/usr/${logPath}/$${date:yyyy-MM}/info-%d{MM-dd-yyyy}-%i.log.gz</filePattern>
        <PatternLayout pattern="%style{%d{ISO8601}}{black} %highlight{%-5level }[%style{%t}{bright,blue}] %X{api-interaction-id} %style{%c{1.}}{bright,yellow} : %msg%n%throwable" />
        <Policies>
            <TimeBasedTriggeringPolicy/>
            <SizeBasedTriggeringPolicy size="50MB" />
        </Policies>
        <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY" />
    </RollingFile>
</appenders>


<Loggers>
    <Logger name="com.demo" level="debug" additivity="false">
        
        <AppenderRef ref="infoLogs" level="debug"/>
        <AppenderRef ref="LogToConsole" level="debug" />
    </Logger>

    <Root level="debug">
        <AppenderRef ref="LogToConsole" level="debug" />
    </Root>
</Loggers>

</Configuration>

Он правильно регистрируется в локальном файле местоположения, например:

  2020-07-08T03:08:10,816 INFO  [main]  c.f.s.w.Application : Started Application in 131.144 seconds (JVM running for 141.392)

Но в AWS журнале это как-то с Добавляются значения мусора:

   [30m2020-07-09T06:55:16,979[m [32mINFO [m[[1;34mhttp-nio-8080-exec-6[m] [1;33mc.f.c.f.l.LoggerSlf4jImpl[m : Input Request Start:58b2d544-ca8a-45b0-9797-f5d4b79db0b8

Требуется решение для этого?

1 Ответ

1 голос
/ 09 июля 2020

Когда вы настраиваете вывод с такими вещами, как highlight и style, Log4J добавит escape-последовательности ANSI в вывод. Я предполагаю, что пример в AWS взят из CloudWatch, где представление веб-консоли не поддерживает рендеринг стилей ANSI.

Есть несколько подключаемых модулей браузера, которые выбирают escape-последовательности и правильно их отображают. Я не пробовал их, поэтому не могу сказать, насколько хорошо они работают.

Другой вариант, который я рекомендую, - это отключить раскраску ANSI в журналах, которые вы отправляете на AWS. Даже если вы найдете средство просмотра журналов, поддерживающее ANSI, наличие этих управляющих последовательностей затруднит анализ журналов (например, с помощью CloudWatch Insights или Elasticsearch), если вы захотите это в будущем. Если это консольное приложение, которое вы используете для AWS, установите disableAnsi на true.

...