ロギングにlog4j-2.7を使用するスプリングブート(v1.5.4)Webアプリケーションがあります。 ログメッセージをファイルやコンソールに書き込むときにはうまく動作しますが、メッセージをTcpSocketServer
に送信すると、ログサーバーは「{}」の書式を指定しないでメッセージを出力します。例えば、このコード:log4j2 TcpSocketServerはメッセージ内の「{}」を置き換えません
logger.info("Request from [{}] to [{}]", ipInfo, reqPath);
RollingfileAppender
とConsoleAppender
意志出力:
INFO 2017-07-06 16:46:07,929 [127.0.0.1][/senten/align] AuthFilter (http-nio-8180-exec-2) Request from [127.0.0.1] to [/senten/align]
しかしSocketAppender
ちょうど出力に含ま:
INFO 2017-07-06 16:46:07,929 [127.0.0.1][/senten/align] AuthFilter (http-nio-8180-exec-2) Request from [{}] to [{}]
これは、log4jの中SocketAppenders
と私のconfigがあります。 xml
<Appenders>
<Socket name="socket" host="127.0.0.1" port="9898">
<SerializedLayout />
</Socket>
........
</Appenders>
これはTcpSocketServer
のための私のconfigファイルlog4j2-socket.xml
です:私はスタートTcpSocketServer
ために、このコマンドを使用し、
<Configuration status="WARN">
<Appenders>
<RollingFile name="default" fileName="Logs/app.log"
filePattern="Logs/${date:yyyy-MM}/app-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout>
<Pattern>%-5p %d [%X{ip}][%X{reqPath}] %c{1} (%t) %m %ex%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval = "30" modulate="true"/>
<SizeBasedTriggeringPolicy size="200 MB" />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="DEBUG">
<AppenderRef ref="default" level="DEBUG" />
</Root>
</Loggers>
</Configuration>
そして:
java -classpath log4j-core-2.7.jar:log4j-api-2.7.jar:jcommander-1.48.jar org.apache.logging.log4j.core.net.server.TcpSocketServer -p 9898 -c log4j2-socket.xml
誰もがここで間違って何が起こっているのか知っていて、それを修正する方法?ありがとう!