MDCからログ管理構成

17653 ワード

MDCとは何ですか.
初めてMDCに触れて、とても輪をかぶっています.インポートされたパッケージimport orgを見てみましょう.slf4j.Logger;import org.slf4j.LoggerFactory;import org.slf4j.MDC;ログ管理に関連していることは明らかです.
slf 4 jでよく使われるログインタフェースはどれらがありますか?trace、debug、info、warn、error、さらにMDC.
最も一般的なログ管理では、次のような方法が使用されます.
private static final Logger log = LoggerFactory.getLogger(クラス名.class);
log.info();
log.debug();
log.trace();
MDC.put()メソッドは、log 4 j 2を介してログ出力機能を提供する.xmlのlayout構成%X{}でログを取得できます.この方法は非常に柔軟です.
ユーザーが任意のオブジェクトをログ管理できるようにします.
アプリケーションのログ管理の構成方法
ログの出力形式:%X{logId},[%-5 level],%d{yyyy-MM-dd HH:mm:ss.SSS},%t,%c{1}:%msg%n解析:
  • %X{logId}----MDCに対してput()メソッド.
  • [%-5 level]----ログのレベル
  • %d{yyyy-MM-dd HH:mm:ss.SSS}---時間フォーマット
  • %t-----スレッド
  • %c{1}---クラス名
  • %msg---メッセージ
  • %n------改行
  • プロファイルを参照
     xml version="1.0" encoding="UTF-8"?>
        
    <configuration>
        <properties>
            
            <property name="PATTERN">
                %X{logId},[%-5level],%d{yyyy-MM-dd HH:mm:ss.SSS},%t,%c{1}: %msg%n
            property>
    
            
            <property name="BASE_PATH">
                /applog/xxxlog
            property>
    
            
            <property name="APP_NAME">
                xxx-core
            property>
    
            
            <property name="LOG_FILE_NAME">
                ${BASE_PATH}/${APP_NAME}.log
            property>
    
            
            <property name="LOG_FILE_PATTERN">
                ${BASE_PATH}/${APP_NAME}_%d{yyyyMMddHHmm}-%i.log
            property>
        properties>
    
        
        <DynamicThresholdFilter key="traceOpen" defaultThreshold="ERROR" onMatch="ACCEPT"
            onMismatch="NEUTRAL">
            <KeyValuePair key="yes" value="trace" />
        DynamicThresholdFilter>
           
               
        <appenders>
            
            <RollingFile name="rollingFileLog" filename="${LOG_FILE_NAME}" filePattern="${LOG_FILE_PATTERN}"
                append="true">
                <Filters>
                                 
                    
                        level        (onMatch),       (onMismatch)
                    
                Filters>
                       
                <PatternLayout pattern="${PATTERN}" />
                <Policies>
                    <TimeBasedTriggeringPolicy />
                    <SizeBasedTriggeringPolicy size="20 MB" />
                Policies>
                       
                <DefaultRolloverStrategy max="50">
                    <Delete basePath="${BASE_PATH}/" maxDepth="2">
                        <IfFileName glob="${APP_NAME}_*.log" />
                        
                        
                        <IfLastModified age="7d" />
                        <IfAny>
                            <IfAccumulatedFileSize exceeds="2 GB" />
                            <IfAccumulatedFileCount exceeds="100" />
                        IfAny>
                    Delete>
                DefaultRolloverStrategy>
            RollingFile>
                    
            <Console name="console" target="SYSTEM_OUT">
                <PatternLayout pattern="${PATTERN}" />
            Console>
        appenders>
        
         
        <loggers>
            
            <logger name="CoreframeInteractiveLogger" level="info" additivity="true">
                <AppenderRef ref="interactiveAppender" />
            logger>
    
            
            <logger name="CoreframeServiceMetricsLogger" level="info" additivity="true">
                <AppenderRef ref="serviceMetricsAppender" />
            logger>
    
            
            <logger name="coreframe" level="info" />
    
            
            <logger name="Service" level="debug" />
            <logger name="" level="debug" />
    
            
            <logger name="test" level="trace" />
            <logger name="" level="trace" />
    
            <root level="info">
                <AppenderRef ref="console" />
                <AppenderRef ref="rollingFileLog" />
            root>
        loggers>
    
    configuration>