日志是在开发过程中不可缺少的功能。
这里使用了Apache的Log4j作为记录日志的功能。
这里使用了gradle构建工具,gradle地址为:
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.1'
这里使用了IntelliJ IDEA作为IDE,不同IDE之间开发还是有区别的。IntelliJ IDEA确实比其他Java IDE要优秀很多。我们先看看项目结构
一定需要新建一个资源文件名。这里的名字叫做resources(名字可以随意取,只是一般来说都会叫做这个名字)。因为只有设置为资源文件,才会和java编译的class文件一起output。
文件的名字也一定要是log4j.properties。因为Logger会主动的去加载这个文件。
先看看log4j.properties。
log4j.rootLogger=DEBUG, stdout, FILE
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss a}]:%p %l%m%n
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=log.txt
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
这里配置了两种日志输出,一种是DEBUG,还有一种是STDOUT(控制台)。
日志的配置也很简单。就不细说了。
public class MainClass {
private static Logger logger = Logger.getLogger(MainClass.class);
public static void main(String[] args) {
logger.debug("This is debug message.");
logger.info("This is info message.");
logger.error("This is error message.");
}
}
编写好了主函数,接着我们就直接运行吧。
控制台输出
[2017-06-22 09:23:30 上午]:DEBUG com.log.MainClass.main(MainClass.java:10)This is debug message.
[2017-06-22 09:23:30 上午]:INFO com.log.MainClass.main(MainClass.java:11)This is info message.
[2017-06-22 09:23:30 上午]:ERROR com.log.MainClass.main(MainClass.java:12)This is error message.
同时也会新建一个叫做log.txt(log4j.properties配置出来的)的文件的。
This is debug message.
This is info message.
This is error message.
可以看出文件输出和控制台输出是不一样的。这是因为log4j.properties文件配置的log4j.appender.stdout.layout.ConversionPattern是不一样的。
log4j还有更多的配置功能,基本上只需要查看文档即可,所以说还是比较简单的。
如果运行程序出现
log4j:WARN No appenders could be found for logger *****.
log4j:WARN Please initialize the log4j system properly.
那么首先需要查看log4j.properties这个文件是否存在。再看看这个文件是否和class文件一起编译output了。
如果一起output了,那么再查看下log4j.properties 这个文件是否为每个rootLogger写了appender。。。