logback.xmlの例

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