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();

MDC.put()方法提供了日志输出功能,通过log4j2.xml的layout配置%X{ }即可获得日志,这种方式非常灵活,

允许用户对任何对象进行日志管理。

怎么为应用配置日志管理

       日志的输出格式:
       
            %X{logId},[%-5level],%d{yyyy-MM-dd HH:mm:ss.SSS},%t,%c{1}: %msg%n
       

       解析:

  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"?>
    
<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>

 

 

你可能感兴趣的:(MDC到日志管理配置)