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>


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

laravel中的错误与日志(可以自定义日志目录和log文件名)

laravel中的错误与日志 2014-12-19 10:09 by 轩脉刃, 21252 阅读, 1 评论, 收藏, 编辑 日志 laravel中的日志是基于monolog而封装的...
  • wulove52
  • wulove52
  • 2017年05月04日 17:49
  • 4314

使用logback输出日志,自定义输出格式

在开发中比较常见的还是log4j,基本上每个开发者都知道,但是使用logback输出日志,估计用的人不多,其实这两个都是slf4j的实现,而且是同一个作者。 Log4j是Apache的一个开源项目...
  • qq496013218
  • qq496013218
  • 2017年04月05日 09:50
  • 6929

logback-Appender 自定义详解

实际上Appender可能是logback框架中最重要的组件之一,虽然Logger是记录日志的接口,但是如果一个Logger没有关联到任何Appender的话,那么这个Logger就无法记录任何信息。...
  • hupoling
  • hupoling
  • 2017年07月19日 11:31
  • 1088

logback基础知识 DBAppend重写

问题:logback的DBAppender只能写入4个参数,而且参数名字固定,保存数据的表名固定,因此解决以上问题,需要重写DBAppender; 而且还自己从数据库定义各种类型的日志级别 方案:...
  • qq352345425
  • qq352345425
  • 2015年07月21日 10:54
  • 939

用java编程方式实现logback和log4j的自定义格式日志

近期有个项目需求打印"yyyyMMdd.log"的日志,以方便flume进行日志收集,查看了官方文档http://logback.qos.ch/manual/layouts.html,下面是简单的实现...
  • mw08091020
  • mw08091020
  • 2014年12月01日 16:52
  • 7094

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

Logback将执行日志事件输出的组件称为Appender,实现的Appender必须继承 ch.qos.logback.core.Appender 接口 接口如下: package ch.q...
  • Doraemon_wu
  • Doraemon_wu
  • 2016年07月20日 21:42
  • 8215

log4j2自定义配置文件位置和文件名(附log4j2.xml配置实例)

前言我们使用log4j2一般做法是将log4j2.xml文件放在资源文件夹根目录。对于有强迫症的开发者来说,我更喜欢在资源文件夹下新建包或文件夹,然后把配置文件放在里面。本博客将介绍如何自定义log4...
  • wengengeng
  • wengengeng
  • 2016年12月15日 18:42
  • 7365

slf4j实现热加载日志级别

  • 2015年12月08日 16:46
  • 690KB
  • 下载

logback自定义过滤器

自定义过滤器 logback.xml配置文件                               ${LOG_HOME}/channel_add.%d{yyyy-MM-dd}.log   ...
  • chenyu201003
  • chenyu201003
  • 2017年03月16日 11:42
  • 255

Web项目中诡异的java.lang.ClassNotFoundException: ch.qos.lorgback.classic.PatternLayout问题解决

引言: 诡异而少见的java.lang.ClassNotFoundException: ch.qos.lorgback.classic.PatternLayout异常错误信息,在启动的时候,出现了异常...
  • blueheart20
  • blueheart20
  • 2015年04月28日 10:17
  • 22959
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:logback系列之七:继承RollingFileAppender,保存自定义文件名的日志
举报原因:
原因补充:

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