MDC到日志管理配置

MDC是什么?

第一次接触MDC,很蒙圈。看看导入的包import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.slf4j.MDC;它显然和日志管理有关。

slf4j常用的日志接口有哪些?trace、debug、info、warn、error,再加上MDC.

最常见的日志管理会采用这种方式:

private static final Logger log = LoggerFactory.getLogger(类名.class);

log.info();

log.debug();

log.trace();

怎么为应用配置日志管理

       日志的输出格式:
        <property name="PATTERN">
            %X{logId},[%-5level],%d{yyyy-MM-dd HH:mm:ss.SSS},%t,%c{1}: %msg%n
        </property>
       解析:

  1.        %X{logId}----针对MDC.put("", "")方法。
  2.        [%-5level]----日志的级别
  3.        %d{yyyy-MM-dd HH:mm:ss.SSS}-----时间格式化
  4.        %t ----- 线程
  5.        %c{1} --- 类名
  6.        %msg --- 消息
  7.        %n ------换行

看配置文件

 <?xml version="1.0" encoding="UTF-8"?>
<!-- status="OFF",可以去掉,它的含义为是否记录log4j2本身的event信息,默认是OFF -->    
<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>

    <!-- xx报文日志级别 -->
    <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>
                过滤掉不符合日志级别的日志
                <!-- <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL" /> -->
                 只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)
                <!-- <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" /> -->
            </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" />
                    <!--! 这里的age必须和filePattern协调, 后者是精确到HH, 这里就要写成xH, xd就不起作用
                    另外, 数字最好>2, 否则可能造成删除的时候, 最近的文件还处于被占用状态,导致删除不成功!-->
                    <!--7天-->
                    <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>
        <!-- xx日志 -->
        <logger name="CoreframeInteractiveLogger" level="info" additivity="true">
            <AppenderRef ref="interactiveAppender" />
        </logger>

        <!-- xx日志 -->
        <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>

猜你喜欢

转载自www.cnblogs.com/Lambquan/p/11892356.html