logback系列之七:继承RollingFileAppender,保存自定义文件名的日志

原创 2016年08月29日 10:08:38
继承类:
package com.hk3t.air.system.log;

import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.rolling.RollingFileAppender;

import com.hk3t.air.utils.MyConstants;

/**
 * @author Sunny 
 *
 * 2016-8-23
 */
public class UserFileAppender extends RollingFileAppender<ILoggingEvent> {
	
	private String currentlyActiveFile;
	
	@Override
	protected void subAppend(ILoggingEvent event){
		
		if(currentlyActiveFile == null){
			currentlyActiveFile = getFile();
		}
		
		String activeFile = currentlyActiveFile;
		if(event.getMdc() != null){
			if(event.getMdc().get(MyConstants.LOG_USER_KEY) != null && event.getMdc().get(MyConstants.LOG_FILEPATH_KEY) != null){
				activeFile = event.getMdc().get(MyConstants.LOG_FILEPATH_KEY);
			}else{
				if(event.getMdc().get(MyConstants.LOG_USER_KEY) != null){
					activeFile = activeFile.replace("{LOG_USER}", event.getMdc().get(MyConstants.LOG_USER_KEY));
				}
				if(event.getMdc().get(MyConstants.LOG_IP_KEY) != null){
					activeFile = activeFile.replace("{LOG_IP}", event.getMdc().get(MyConstants.LOG_IP_KEY));
				}
			}
		}
		
		setFile(activeFile);
		start();
		super.subAppend(event);
	}
}

XML配置

	<appender name="USERFILE"  class="com.hk3t.system.log.UserFileAppender">
	
	    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>INFO</level>
	    </filter>
	    
            <filter class="com.hk3t.system.log.UserNameFilter"></filter>
		
            <file>${log.base}/user/user_{LOG_USER}_{LOG_IP}.log</file> 
        
        <!-- 
        	无法归档user.log日志,只有当session和ip都相同时(即文件名相同)。才会进行回滚的操作 
	        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
	            <FileNamePattern>${log.base}/%d{yyyy-MM-dd}_user_log.log</FileNamePattern>
	            <minIndex>1</minIndex> 
	            <MaxHistory>2</MaxHistory> 
	        </rollingPolicy>
        -->  
        <encoder>
            <pattern>%date [%contextName] [%marker] [%thread] [%X{LOG_IP}] [%X{LOG_USER}] %-5level %logger{80} - %msg%n</pattern>  
        </encoder>
        <append>true</append>  
    	<prudent>false</prudent>    
    </appender>


版权声明:看完觉得好的。请留个脚印,证明你来过

相关文章推荐

Logback常用配置详解

logback是一套日志框架,由log4j的优化版,由同一个作者开发,在速度和性能上都超过其他日志框架,再结合slf4j,已成为当前最流行的日志框架。Logback最常用就是在classpath定义一...

logback 常用配置详解(二) <appender>

logback 常用配置详解(二)    : 是的子节点,是负责写日志的组件。 有两个必要属性name和class。name指定appender名称,class指定ap...
  • haidage
  • haidage
  • 2011年09月20日 17:21
  • 36625

Logback日志系统配置攻略

logback是log4j作者推出的新日志系统,原生支持slf4j通用日志api,允许平滑切换日志系统,并且对简化应用部署中日志处理的工作做了有益的封装。 官方地址为:http://logback....
  • jiaincs
  • jiaincs
  • 2010年06月22日 13:48
  • 19436

阅读Logback文档笔记--Logback的Appender配置

Logback将执行日志事件输出的组件称为Appender,实现的Appender必须继承 ch.qos.logback.core.Appender 接口 接口如下: package ch.q...

logback高级特性使用(三)

本文转自:点击打开链接 异步记录日志 注意:该功能需要高版本才能支持,如1.0.11。 AsyncAppender,异步记录日志。 工作原理: 当Logging Eve...

log4j迁移到logback

本帖最后由 陈明河 于 2014-8-19 15:20 编辑 考虑到logback日志组件性能比log4j好,所以项目开发过程中抛弃log4j改用logback。 log4j迁移到logbac...

log4j2教程【RollingFileAppender】

说明自己翻译官网的说明RollingFileAppenderRollingFileAppender是一个OutputStreamAppender,它(会把日志)写入到filename参数命名的文件中,...

日志规范 之 logback日志

目的 为了规范应用日志,方便系统问题分析跟查,特制订本规范。 适用范围 适用 Lifeix 所有后台应用。 内容 日志记录准则 在代码中嵌入 log 代码信息,主要...

Log4j RollingFileAppender 备份日志文件名 修改

使用RollingFileAppender,每次日志容量达到要求后,生成的新日志文件名为 logfile.log.x ,个人感觉有点不舒服,想修改为:logfile.x.log,方法为: public...
  • liu251
  • liu251
  • 2009年07月28日 17:33
  • 4231

logback-Appender 自定义详解

实际上Appender可能是logback框架中最重要的组件之一,虽然Logger是记录日志的接口,但是如果一个Logger没有关联到任何Appender的话,那么这个Logger就无法记录任何信息。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:logback系列之七:继承RollingFileAppender,保存自定义文件名的日志
举报原因:
原因补充:

(最多只允许输入30个字)