slf4j log4j配置 log4j过滤

slf4j log4j配置

 

1.需要的jar包:

log4j-api-2.0-rc2.jar

log4j-core-2.0-rc2.jar

log4j-slf4j-impl-2.0.jar

slf4j-api-1.6.4.jar

 

下载路径:http://mvnrepository.com/artifact/org.apache.logging.log4j

 

2.配置文件:log4j2.xml   放在src下(编译后自动复制到classes下)

<?xml version="1.0" encoding="UTF-8"?>
<!-- status=debug 可以查看log4j的装配过程 -->
<configuration status="off">
	<properties>
		<property name="LOG_HOME">D:\\log\\proxy</property>
		<!-- 日志备份目录 -->
		<property name="BACKUP_HOME">{LOG_HOME}/backup</property>
		<property name="STAT_NAME">stat</property>
		<property name="SERVER_NAME">global</property>
	</properties>
	<appenders>
		<!-- 定义控制台输出 -->
		<Console name="Console" target="SYSTEM_OUT">
			<Filters>  
				<!-- 过滤日志级别  -->
			    <!-- <ThresholdFilter level="TRACE" onMatch="NEUTRAL" onMismatch="DENY"/>   -->
			    <!-- 过滤内容匹配sss的日志  -->
			    <!-- <RegexFilter regex=".*sss.*" onMatch="NEUTRAL" onMismatch="DENY"/> -->
			    <!-- 过滤时间  -->
			    <!-- <TimeFilter start="09:00:00" end="09:30:00" onMatch="ACCEPT" onMismatch="DENY"/> -->
			    <!-- onMatch="NEUTRAL" 中性,也会经过其他过滤器,设置为ACCEPT则不会 -->
			</Filters>  
			<PatternLayout charset="UTF-8"
			pattern="[%d{ISO8601}] %-5p %40c{2}:%-4.4L - %m%n" />
		</Console>
		<RollingFile name="InfoLog" fileName="${LOG_HOME}/fc-proxy-log4j2.log"
		filePattern="${LOG_HOME}/fc-proxy-%d{yyyy-MM-dd}-%i.log">
			<ThresholdFilter level="INFO" onMatch="ACCEPT"
			onMismatch="DENY" />
			<PatternLayout charset="UTF-8"
			pattern="[%d{ISO8601}] %-5p %40c{2}:%-4.4L - %m%n" />
			<Policies>
				<TimeBasedTriggeringPolicy interval="1" modulate="true" />
				<SizeBasedTriggeringPolicy size="200MB" />
			</Policies>
			<DefaultRolloverStrategy max="10" />
		</RollingFile>
		<RollingFile name="ErrorLog" fileName="${LOG_HOME}/fc-proxy-error-log4j2.log"
		filePattern="${LOG_HOME}/fc-proxy-error-%d{MM-dd-yyyy}-%i.log">
			<ThresholdFilter level="ERROR" onMatch="ACCEPT"
			onMismatch="DENY" />
			<PatternLayout charset="UTF-8"
			pattern="[%d{ISO8601}] %5p %30c{1}:%4L - %m%n" />
			<Policies>
				<TimeBasedTriggeringPolicy interval="1" modulate="true" />
				<SizeBasedTriggeringPolicy size="500MB" />
			</Policies>
			<DefaultRolloverStrategy max="10" />
		</RollingFile>
		<Async name="Asynch" bufferSize="500000" blocking="false"
		includeLocation="true">
			<appender-ref ref="Console" />
			<appender-ref ref="InfoLog" />
			<appender-ref ref="ErrorLog" />
		</Async>
	</appenders>
	<loggers>
		<!--子log:指定只输出com.aa包中的logger, 忽略其他logger additivity="false" 不附加,子log不重复输出父log内容-->
		<Logger name="com.aa" level="trace" additivity="false">
			<!-- 继承父log -->
			<AppenderRef ref="Asynch"/>
		</Logger>
		<Logger name="com.bb" level="trace" additivity="false">
			<!-- 继承父log -->
			<AppenderRef ref="Asynch"/>
		</Logger>
		<Logger name="tc.com" level="trace" additivity="false">
			<!-- 继承父log -->
			<AppenderRef ref="Asynch"/>
		</Logger>
		<!-- Root Logger -->
		<!-- <root level="INFO">
			<AppenderRef ref="Asynch"/>
		</root> -->
	</loggers>
</configuration>

 

 

 以上注释为个人理解。

官方文档:http://logging.apache.org/log4j/2.x/manual/appenders.html

 

3. java实现:类名:TestServlet

 

package com.dahantc.test;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@WebServlet("/TestServlet")
public class TestServlet extends HttpServlet {

	private static Logger logger = LoggerFactory.getLogger(TestServlet.class);
	private static final long serialVersionUID = -6795168385294556128L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		logger.info("===============sss进入==============");
		PrintWriter _write = resp.getWriter();
		_write.print("22");
		_write.flush();
		_write.close();
		logger.info("========end=======");
	}

}

 

猜你喜欢

转载自278653219.iteye.com/blog/2378152
今日推荐