logback.xml Example
これは、共有のためだけに、私のプロジェクトで使用されているいくつかのlogback.xml
の例です。
P.S Tested with Logback 1.2.3
1. コンソールにログを送信
すべてのロギングはコンソールにリダイレクトされます。
logback.xml
%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
2. ログをファイルに送信+ファイルを回転
2.1 All logging will be redirected to a file logs/app.log
. さらに、このログファイルは毎日、またはファイルサイズが10 MBを超えるとアーカイブされます。
logback.xml
${HOME_LOG} logs/archived/app.%d{yyyy-MM-dd}.%i.log.gz 10MB 20GB 60 %d %p %c{1.} [%t] %m%n
2.2 Below SizeAndTimeBasedFNATP
example is deprecated, it may still work, but it is better to use the above new SizeAndTimeBasedRollingPolicy
example.
logback.xml
${DEV_HOME}/debug.log %d{yyyy-MM-dd HH:mm:ss} - %msg%n ${DEV_HOME}/archived/debug.%d{yyyy-MM-dd}.%i.log 10MB
3. エラーログをメールで送信する
logback.xml
%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n smtp.mailgun.org 25 123 123 TO_EMAIL RO_ANOTHER_EMAIL FROM_EMAIL TESTING: %logger{20} - %m
メールを送信するには、このjavax.mail
が必要です
pom.xml
com.sun.mail javax.mail 1.6.2
5. 非同期ログ
これにより、ロギングが高速になります。
logback.xml
6. SiftingAppender
ログを別のログファイルに送信します。ログファイル名は実行時にMDCを介して定義されます。
logback.xml
logFileName head0 ${DEV_HOME}/${logFileName}.log %d{yyyy-MM-dd HH:mm:ss} [%thread] %level %logger{35} - %msg%n ${DEV_HOME}/${logFileName}.%i.log.zip 1 10 10MB
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; //... public void run() { MDC.put('logFileName', "head1"); logger.debug("hello"); MDC.remove('logFileName'); }
Note
この完全なLogback
SiftingAppender exampleを参照してください
7. プログラムでログファイル名を設定する
System.setProperty
を介して、プログラムでログファイル名${log.name}
を設定します
logback.xml
${USER_HOME}/${log.name}.error %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n ${USER_HOME}/${log.name}.log %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{35} - %msg%n
TestRunApp.java
package com.example.core; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TestRunApp { //No static, else log.name.IS_UNDEFINED.log private final Logger logger = LoggerFactory.getLogger(TestRunApp.class); public static void main(String[] args) { //Set this before the logger start. System.setProperty("log.name", "abcdefg"); TestRunApp obj = new TestRunApp(); obj.start(); } private void start() { logger.debug("------ Starting Ant------"); //... } }
出力
Debug log file path /home/example/ant/logs/abcdefg.log Error log file path /home/example/ant/logs/abcdefg.error
Note
この完全な例を参照してくださいLogback – Set
log file name programmatically