HTTP @GET
と@POST
を別々のファイルに記録する方法を教えてください。基本的には、読み取り専用(GET)と書き込み専用(PUT、POST、DELETE)のログファイルが必要です。埋め込まれた桟橋を有するlogback
とSlf4j
を使用する。HTTP GETとHTTPを別々のファイルに書き込む方法
1つの解決策は、2つのロガーをクラスに入れてそれに応じて使用することです。要件ごととして今即ち
private final static Logger log = LoggerFactory.getLogger(Controller.class);
private final static Logger writeLog = LoggerFactory.getLogger("WRITE");
Appender
とLogger
を定義し、上記ロガーを使用します。
<appender name="APPENDER_READ"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${HOME}/logs/read.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>read.%i.log.zip</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>3</maxIndex>
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>5MB</maxFileSize>
</triggeringPolicy>
<encoder>
<pattern>%date{YYYY-MM-dd HH:mm:ss} %level [%thread] %X{TaskKey} %msg%n</pattern>
</encoder>
</appender>
<appender name="APPENDER_WRITE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${HOME}/logs/write.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>logs/write.%i.log.zip</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>3</maxIndex>
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>5MB</maxFileSize>
</triggeringPolicy>
<encoder>
<pattern>%date{YYYY-MM-dd HH:mm:ss} %level [%thread] %X{TaskKey} %msg%n</pattern>
</encoder>
</appender>
<logger name="WRITE" level="warn" additivity="false">
<appender-ref ref="APPENDER_WRITE" />
</logger>
<root level="WARN">
<appender-ref ref="APPENDER_READ" />
</root>
しかし、私は(とすぐに要求が入ると)、コントローラからではなく、ハンドラレベルからではないログを開始することができますいくつかのよりよい解決策を探しています。
おかげで@riskop(だけではなく、 'LOGFILENAME' の 'METHOD' を使用)、これは素晴らしい取り組んでいます。答えをありがとう。 –