java 日志 自定义过滤

Log4j 深入过滤器


项目清单



源码解析


package com.lives.platform.common.log;

import org.apache.log4j.spi.Filter;
import org.apache.log4j.spi.LoggingEvent;

public class AccessLogFilter extends Filter{
/**
 * 通过过滤器实现等级配置:
 * 1.当使用该过滤器时,数据的leve为AccessLog.LOG_LEVEL
 * 2.log4j.xml中 <root> 下info指的的全局,即别的如果有用日志的地方而不是通过该自定义的filter的等级输出方式
 */
	@Override
	public int decide(LoggingEvent event) {
		int inputLevel = event.getLevel().toInt();
		if (inputLevel == AccessLog.LOG_LEVEL) {
			return 0;
		}
		return -1;
	}

}

package com.lives.platform.common.log;

import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.net.SyslogAppender;

public class AccessLog {
	//自定义了等级,不同于debug、info..等的数值就可以了
	public static final int LOG_LEVEL = 20050;

    private static class CustomerLogLevel extends Level{  
		private static final long serialVersionUID = 1L;

		public CustomerLogLevel(int level, String levelStr, int syslogEquivalent) {  
            super(level, levelStr, syslogEquivalent);  
        }         
    }  
    
    /**
     *   1.LOG_LEVEL 等级值;
     *   2."ACCESS" 日志输出的前缀 
     */
    
    private static final Level CustomerLevel = new CustomerLogLevel(LOG_LEVEL, "ACCESS ", SyslogAppender.LOG_LOCAL0);  
    
    /**
     * 输出日志
     */
    public static void log(Logger logger,
    		Object info){  
        logger.log(CustomerLevel, info);  
    } 
}

package com.lives.log.test;

import org.apache.log4j.Logger;

import com.lives.platform.common.log.AccessLog;

public class LogTest {
public static void main(String[] args) {
	Logger logger = Logger.getLogger(LogTest.class);
	 AccessLog.log(logger, "request info : " +" logger test ...");
}
}

log4j.xml 解析


<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">  
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
	<!-- all log for console --> 
	<!-- 控制台输出 --> 
    <appender name="console" class="org.apache.log4j.ConsoleAppender">  
        <layout class="org.apache.log4j.PatternLayout">  
            <param name="ConversionPattern"  value="[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} %l %M - %m%n" />  
        </layout>
    </appender>
    <!-- 自定义输出方式 -->
    <!-- access log -->  
   	<appender name="access" class="org.apache.log4j.DailyRollingFileAppender">  
        <layout class="org.apache.log4j.PatternLayout">  
            <param name="ConversionPattern"  value="[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} - %m%n" />  
        </layout>
        <param name="Append" value="true" />  
        <param name="File" value="D:/lives/logs/access.log" />
        <param name="DatePattern" value="'.'yyyy-MM-dd'.'" /> 
        <!-- 过滤器配置 -->
        <filter class="com.lives.platform.common.log.AccessLogFilter" />     
    </appender>  
  <!-- 根目录:那些配置生效 -->
    <root>  
        <priority value ="INFO"/>
        <appender-ref ref="console" />  
        <appender-ref ref="access" />  
 	</root>  
  
</log4j:configuration>

maven-pox.xml 管理


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.lives</groupId>
  <artifactId>lives_platform</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>lives_platform Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <properties>
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	<spring.version>3.1.1.RELEASE</spring.version>
  </properties>

  <dependencies>
 
	<!-- log4j -->
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-log4j12</artifactId>
		<version>1.7.5</version>
	</dependency>
	
  </dependencies>
  <profiles>
  	<profile>
  		<id>dev</id>
  		<properties>
  			<package.environment>dev</package.environment>
  		</properties>
  		<activation>
  			<activeByDefault>true</activeByDefault>
  		</activation>
  	</profile>
  	<profile>
  		<id>test</id>
  		<properties>
  			<package.environment>test</package.environment>
  		</properties>
  	</profile>
  	<profile>
  		<id>prod</id>
  		<properties>
  			<package.environment>prod</package.environment>
  		</properties>
  	</profile>
  </profiles>
  <build>
    <finalName>lives_platform</finalName>
    <plugins>
    	<plugin>
	        <groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<version>3.1</version>
			<configuration>
				<source>1.8</source>
				<target>1.8</target>
	            <archive>
	                <addMavenDescriptor>false</addMavenDescriptor>
	            </archive>
	            <webResources>
	                <resource>
	                    <directory>src/main/resources/properties/${package.environment}</directory>
	                    <targetPath>WEB-INF/classes</targetPath>
	                    <filtering>true</filtering>
	                </resource>
	            </webResources>
	        </configuration>
        </plugin>
	</plugins>
  </build>
</project>


运行效果图


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值