首先需要包,这里我是手动去apache官网下载的https://www.apache.org/dyn/closer.lua/logging/log4j/2.11.0/apache-log4j-2.11.0-bin.zip
点击页面中的http://mirrors.tuna.tsinghua.edu.cn/apache/logging/log4j/2.11.0/apache-log4j-2.11.0-bin.zip下载
不过里面少一个log4j-1.2.16.jar 包需要另外下载
maven坐标
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.6</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.6</version> </dependency>
我用的是jdk1.7 有maven 和普通的这里都会写
原理图如下:
首先是普通的java 项目,
步骤 创建项目导入3个包,放入log4j.properties 配置,-(注意重点)在java项目中(WEB除外)这个文件放的位置要放在src目录下.
然后写个类去输出点日志
package test;
import org.apache.log4j.Logger;
public class Log4jTest {
public static void main(String[] args) {
//定义logger对象,后面的参数和properties文件中是有对应关系的,如果没有就会报错
Logger logger = Logger.getLogger("register");
Logger logger2 = Logger.getLogger("login");
//输出日志
logger.info("register");
logger.info("1");
logger.info("2");
logger2.info("login");
logger2.info("3");
logger2.info("4");
}
}
log4j.properties
(注意)路径有个坑 就是绝对路径后面有个F\ 有个反斜杠,之前一直没有打印出日志就是因为少一个这个!!
log4j.rootLogger=register,login
log4j.logger.register=INFO,register
log4j.appender.register=org.apache.log4j.DailyRollingFileAppender
log4j.appender.register.File=F\:/logs/register.log
log4j.appender.register.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.register.layout=org.apache.log4j.PatternLayout
log4j.appender.register.layout.ConversionPattern=%d %p [%c %L %l] - %m%n
log4j.additivity.register=false
log4j.logger.login=INFO,login
log4j.appender.login=org.apache.log4j.DailyRollingFileAppender
log4j.appender.login.File=F\:/logs/login.log
log4j.appender.login.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.login.layout=org.apache.log4j.PatternLayout
log4j.appender.login.layout.ConversionPattern=%d %p [%c %L %l] - %m%n
log4j.additivity.login=false
大致说明下配置之后会有详细的,
log4j.rootLogger=register,login 这里可以理解为对象,这里创建了2个对象,可以分别做不同的配置
这个是大小写敏感的注意了!!
log4j.logger.register=INFO,register 这里意思是说我只输出INFO级别之上包括自己级别的信息
log4j.appender.XXX.File 指定文件输出路径(没有就自动创建文件夹)
log4j.additivity.login=false 设置这个子LOGGER输出日志不在父级别Logger里面输出
再次需要注意路径是绝对路径的时候 盘符(D盘F盘)后面要加个 ''\'' 之前一直找不到不生成文件的问题就是这个原因!!
详细可以查看https://www.cnblogs.com/0201zcr/p/5725508.html
按照上面配置的就可以创建出对应的日志文件了
之后就是MAVEN项目下的
代码是一样的,只需要注意log4j.properties文件放的位置
quickStart的是这src/main/java这级目录
web的是在src/main/resources这级目录下.
web下面路径可以这样写:
log4j.appender.info.File=${webApp.root}/WEB-INF/logs/info.log
在web.xml里面配置
<!-- 设置log4j的日志保存位置为:项目\webapp\WEB-INF\logs -->
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>webApp.root</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
最后生成的文件位置在
目前就这些.等遇到其他的问题的时候再做补充.