我们有多个spring-boot服务,为了进行日志记录,我们使用log4j2.xml。我们的log4j2.xml包含控制台和文件附加程序,我们通过docker映像将这些服务部署到AWS上的HA代理,这些代理基本上是基于Linux的计算机。
我面临的问题是对于某些服务,日志文件字符集已以二进制格式创建,并且正在生成特殊字符,因此我们无法将日志发送给splunk。在id下面的我的log4j2.xml中,我特别指定了文件格式为UTF-8,但仍会创建Binary。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info" monitorInterval="60">
<Properties>
<Property name="log-path">${sys:APP_LOG_PATH}</Property>
<Property name="appName">${sys:SPRING_APPLICATION_NAME}</Property>
<Property name="envName">${sys:SPRING_PROFILES_ACTIVE}</Property>
</Properties>
<Appenders>
<Console name="Console-Appender" target="SYSTEM_OUT">
<PatternLayout>
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS}{GMT} [%-5level] [%t] %c{1} - %msg%n
</pattern>
<charset>US-ASCII</charset>
</PatternLayout>
</Console>
<File name="File" fileName="${log-path}/${appName}-${envName}--${date:yyyy-MM-dd-HH-mm-ss-SSS}.log" append="true">
<PatternLayout pattern="%d{yyyy-MMM-dd HH:mm:ss a} [%t] %-5level %logger{36} - %msg%n" charset="UTF-8" />
</File>
</Appenders>
<Loggers>
<Root level="INFO" additivity="false">
<AppenderRef ref="Console-Appender" level="WARN" />
<AppenderRef ref="File" level="INFO" />
</Root>
<Logger name="com.tmo.eus" level="INFO" additivity="false">
<Appender-ref ref="Console-Appender" />
<AppenderRef ref="File" />
</Logger>
</Loggers>
</Configuration>
让我知道是否还有其他方法可以明确指定文件格式,使其遵循相同的字符集。