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======="); } }