利用MDC在日志上增加用户或跟踪码

log4j.rootLogger=error,Console

log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p - %c#%M %x - %m  (%r ms)%n

log4j.logger.com.company.project=DEBUG

#SqlMap logging configuration...
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.cache.CacheModel=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientImpl=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.builder.xml.SqlMapParser=DEBUG
log4j.logger.com.ibatis.common.util.StopWatch=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG

log4j.logger.org.apache.struts.action.RequestProcessor=ERROR
#log4j.logger.org.apache.commons.beanutils.PropertyUtils=DEBUG
#log4j.logger.org.apache.commons.beanutils.BeanUtils=DEBUG
#log4j.logger.org.tuckey.web.filters.urlrewrite.UrlRewriteFilter=DEBUG
#log4j.logger.org.apache.struts.action=DEBUG
#log4j.logger.org.apache.commons.beanutils=DEBUG
#log4j.logger.org.springframework.orm.ibatis=DEBUG
#log4j.logger.org.springframework.jdbc=DEBUG

如何使用log4j记录操作员的登录ID:在记录日志的时候,我们可能有这种需求,对于每个记录除了知道日志信息外,也要当前登录用户的信息。可以:使用log4j的 MDC解决这个问题。
  • 1, 通过filter或者自己在Action中通过命令MDC.put("userId",DEFAULT_USERID);向MDC设置值。
  • 2, 在log4j的配置文件中通过[%X{userId}]提取出用户设置的值并输出到日志,如下
  • log4j.appender.layout.ConversionPattern=%d [%t] %-5p - %c#%M %x - %m  (%r ms)%n [%X{userId}]

slf4j

服务进入时

MDC.put("tracenum", costLogTrackDTO.getTrackNo());

服务退出时

MDC.remove("tracenum");

日志配置

 

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
 <property name="log.base" value="." />
 <appender name="connect.stdout" class="ch.qos.logback.core.ConsoleAppender">
  <encoder charset="UTF-8"> <!-- encoder 可以指定字符集,对于中文输出有意义 -->
   <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%level] [%X{tracenum}] [%logger:%line] - %msg%n
   </pattern>
  </encoder>
 </appender> 
 <appender name="connect.file"
  class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>log/connect.log</file>
  <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
   <level>DEBUG</level>
  </filter>
  <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
   <fileNamePattern>log/connect.log.%i</fileNamePattern>
   <minIndex>1</minIndex>
   <maxIndex>10</maxIndex>
  </rollingPolicy>
  <triggeringPolicy
   class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
   <maxFileSize>50MB</maxFileSize>
  </triggeringPolicy>
  <encoder charset="UTF-8">
   <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%level] [%X{tracenum}] [%logger:%line] - %msg%n</pattern>
  </encoder>
 </appender>
 <appender name="connect.exception.file" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>log/connectException.log</file>
  <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
   <level>WARN</level>
  </filter>
  <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
   <fileNamePattern>log/connectException.log.%i</fileNamePattern>
   <minIndex>1</minIndex>
   <maxIndex>10</maxIndex>
  </rollingPolicy>
  <triggeringPolicy
   class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
   <maxFileSize>50MB</maxFileSize>
  </triggeringPolicy>
  <encoder charset="UTF-8">
   <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%level] [%X{tracenum}] [%logger:%L] - %msg%n</pattern>
  </encoder>
 </appender> 
 <appender name="eaibf.file" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>log/eaibapi.log</file>
  <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
   <level>DEBUG</level>
  </filter>>
  <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
   <fileNamePattern>log/eaibapi.log.%i</fileNamePattern>
   <minIndex>1</minIndex>
   <maxIndex>12</maxIndex>
  </rollingPolicy>
  <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
   <maxFileSize>50MB</maxFileSize>
  </triggeringPolicy>
  <encoder charset="UTF-8">
   <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%level][%X{tracenum}][%logger] - %msg%n</pattern>
  </encoder>
 </appender>
 
 <appender name="cos_wtc.file"
  class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>log/cos_wtc.log</file>
  <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
   <level>DEBUG</level>
  </filter>
  <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
   <fileNamePattern>log/cos_wtc.log.%i</fileNamePattern>
   <minIndex>1</minIndex>
   <maxIndex>10</maxIndex>
  </rollingPolicy>
  <triggeringPolicy
   class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
   <maxFileSize>50MB</maxFileSize>
  </triggeringPolicy>
  <encoder charset="UTF-8">
   <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%level] [%X{tracenum}] [%logger] - %msg%n</pattern>
  </encoder>
 </appender>
 <logger name="com.bizprocess.main.cosh.handler" level="DEBUG" additivity="false">
  <appender-ref ref="connect.stdout"/>
  <appender-ref ref="connect.file" />
 </logger>
 <logger name="com.common.eaib.handler" level="DEBUG" additivity="false">
  <appender-ref ref="connect.stdout"/>
  <appender-ref ref="connect.file" />
 </logger>
 <logger name="com.eai.security" level="DEBUG" additivity="false">
  <appender-ref ref="eaibf.file" />
 </logger>
 <logger name="com.eai.api.EAIBDataProcessor" level="DEBUG" additivity="false">
  <appender-ref ref="eaibf.file" />
 </logger>
 <logger name="com.eai.pack" level="DEBUG" additivity="false">
  <appender-ref ref="eaibf.file" />
 </logger>
 <logger name="java.sql.PreparedStatement" additivity="false">
  <level value="WARN" />
 </logger>
 <logger name="java.sql.Connection" additivity="false">
  <level value="WARN" />
 </logger>
 <logger name="java.sql.Statement" additivity="false">
  <level value="WARN" />
 </logger>
 <logger name="org.springframework" additivity="false">
  <level value="WARN" />
 </logger>
 
 <!-- cos_wtc日志输出 -->
 <logger name="com.wtc.ejb" level="DEBUG" additivity="false">
  <appender-ref ref="connect.stdout" />
  <appender-ref ref="cos_wtc.file" />
 </logger>
 
 <!-- 输出cos系统日志 -->
 <logger name="com.connect" level="INFO" additivity="false">
  <!--打版本时注意一定要去掉connect.stdout配置,否则日志会打到控制台 -->
  <appender-ref ref="connect.stdout"/>
  <appender-ref ref="connect.file"/>
  <appender-ref ref="connect.exception.file"/>
 </logger>
 
 <!-- 输出cos系统日志 -->
 <logger name="com" level="INFO" additivity="false">
  <!--打版本时注意一定要去掉connect.stdout配置,否则日志会打到控制台 -->
  <appender-ref ref="connect.stdout"/>
  <appender-ref ref="connect.file" />
  <appender-ref ref="connect.exception.file" />
 </logger>
 <root>
  <level value="INFO"/>
  <!--打版本时注意一定要去掉connect.stdout配置,否则日志会打到控制台 -->
  <appender-ref ref="connect.stdout"/>
  <appender-ref ref="connect.file" />
  <appender-ref ref="connect.exception.file" />
 </root>
</configuration>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值