java - 使用log4j2在AWS日志中记录垃圾值

标签 java amazon-web-services gradle logging log4j2

我的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
需要解决方案吗?

最佳答案

当使用highlightstyle之类的东西配置输出时,Log4J会将ANSI转义序列添加到输出中。我假设AWS中的示例来自CloudWatch,其中Web控制台 View 不支持呈现ANSI样式。
有一些浏览器插件可以选择转义序列并正确呈现它们。我没有尝试过,所以不能说它们的效果如何。
我建议的另一种选择是在运至AWS的日志中更改ANSI的颜色。即使您找到支持ANSI的日志查看器,如果将来将来需要这些转义序列,也将很难分析日志(例如使用CloudWatch Insights或Elasticsearch)。如果它是用于AWS的控制台附加程序,请将disableAnsi设置为true

关于java - 使用log4j2在AWS日志中记录垃圾值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62809860/

相关文章:

java - 解释 OOP 中的封装

java - 添加更多 Controller 时,Spring mvc 性能显着下降

java - 设置类路径。无法识别 javac

java - Eclipse ADT 22.6.2 仍然给出错误 "java.lang.NullPointerException"

amazon-web-services - 使用AWS API获取证书时如何引用AWS ACM证书

amazon-web-services - 如何使用 CloudFormation 在 AWS Route53 中设置 TXT SPF DNS 记录?

security - 有人试图破解我的服务器吗?请告诉我我能做什么?

gradle - 为什么将 gradle.properties 应用于导入项目?

eclipse - 为在Eclipse中运行的Gradle应用设置user.dir

java - 如何将多个 Gradle 项目添加到同一个 IntelliJ 实例中