首先我们来看看百度百科的解释: Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
目前Log4j有两个版本一个是Log4j1和Log4j2。其中Log4j1在2015年就停止更新了,现在大部分都是使用Log4j2,连官网都推荐大家去使用Log4j2,但本篇文章是Log4j1的配置和使用,不知道和Log4j2的会不会有冲突。
1、下载Log4j
想要在Eclipse中使用Log4j,就要去官方下载JAR包。https://www.apache.org/dyn/closer.cgi/logging/log4j/1.2.17/log4j-1.2.17.zip
这是最新版的,进入之后,点击第一个链接就能下载,是一个zip的二进制文件压缩包。
2、在Eclipse中配置Log4j
先将我们刚刚下载的文件解压。然后添加到Eclipse工程中进去。
在工程中选中项目名然后右键,选中Build Path->Configure Build Path。
进入这个页面后。选择Liberaries,再选择Moudulepath,然后点击Add External JARs。
找到解压好的文件,然后选中并打开log4j-1.2.17.jar。这样就把Log4j的JAR包添加成功了。退出时点击Apply and Close。
3、创建Log4j的配置文件
注意配置文件要在src根目录,默认会去src文件夹找。Log4j的配置文件通常由两种格式,一种是XLM,另一种的File。点击工程下的src文件,然后右键选择New->Other。
在General下选择File。
然后,Next,输入名字(一般好像都是用这个名字log4j.properties,不知道别的名字能不能行 ),点完成就可以了。下面的配置文件的内容。
### 设置###
log4j.rootLogger = debug,stdout,D,E
### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出DEBUG 级别以上的日志到=D://Java课件/debug.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = D://Java课件/debug.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 输出ERROR 级别以上的日志到=D://Java课件/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =D://Java课件/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
log4j.appender.stdout = org.apache.log4j.ConsoleAppender这是输出到控制台上,不需要可以把那一段删除。
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender这是在指定路径每天产生一个日志文件。
4、写入日志内容
package senior;
import org.apache.log4j.Logger;
public class logs {
// 获取logger实列,获取日志记录器并读取配置文件,这个记录器将负责控制日志信息
private static Logger logger = Logger.getLogger(logs.class);
public static void main(String[] args) {
// 插入记录信息(格式化日志信息)
// 记录debug级别的信息
logger.debug("这是调试信息");
// 记录info级别的信息
logger.info("这是输出信息");
// 记录error级别的信息
logger.error("这是错误信息");
// 记录warn级别的信息
logger.warn("这是警告信息");
// 记录trace级别的信息
logger.trace("这是跟踪信息");
// 记录fatal级别的信息
logger.fatal("这是致命信息");
}
}
这是控制台输出的。
这是生成的日志文件内容。
5、把日志的内容输出到控制台上
package senior;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.stream.Stream;
public class logs {
//日志文件的路径
static String path = "D:\\java课件\\error.log";
public static void main(String[] args) {
//如果出现乱码或报错了,则设置编码方式为GBK
Charset charset = Charset.forName("GBK");
Stream<String> lines = null;
try {
lines = Files.lines(Paths.get(path),charset);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} //如果你是需要按行去处理数据文件的内容,使用java 8的Stream流将文件读取与文件处理有机融合。
lines.forEach(ele -> {
System.out.println(ele);
});
}
}
以上是log4j的基础用法,log4j的详细使用方法,例如配置文件的更改,或者自定义配置文件等大家可以去看看我的参考网址。