5 Log4j示例程序
Log4j示例程序
我们已经学会了如何创建配置文件,本章讲述如何生成调试信息,并将其写入一个简单的文本文件。
项目结构
展开/折叠
E:\workspacne_JDK8Tomcat8.5\Log4jDemo ├─lib\ │ ├─commons-logging-1.2.jar │ ├─log4j-1.2.17.jar │ ├─log4j-api-2.13.3.jar │ ├─log4j-core-2.13.3.jar │ └─mysql-connector-java-8.0.17.jar ├─log.out ├─Log4jConfig\ │ ├─DailyRollingFileAppender\ │ │ └─log4j.properties │ ├─file\ │ │ └─log4j.properties │ ├─FileAppender\ │ │ ├─log4j.properties │ │ └─log4j.xml │ ├─file_and_stout\ │ │ └─log4j.properties │ ├─grammar\ │ │ └─log4j.properties │ ├─HTMLLayout\ │ │ └─log4j.properties │ ├─JDBCAppender\ │ │ ├─log4j.properties │ │ └─log4j.xml │ ├─Level\ │ │ └─log4j.properties │ ├─loggerPackage\ │ │ └─log4j.xml │ ├─PatternLayout\ │ │ └─log4j.properties │ ├─RollingFileAppender\ │ │ └─log4j.properties │ ├─stdout\ │ │ └─log4j.properties │ └─xml_file_stdout\ │ └─log4j.xml ├─README.md └─src\ ├─demo\ │ ├─file\ │ │ └─appender\ │ │ └─XMLFileAppenderTest.java │ ├─level\ │ │ ├─SetLevelByMethod.java │ │ └─SetLevleByConfig.java │ ├─Log4jExample.java │ ├─logpackage\ │ │ └─LoggerPackage.java │ └─method\ │ └─LoggerMethodTest.java └─log4j.properties
源代码
https://github.com/lanlan2017/Log4jDemo
日志输出到文件
Log4j.properties
下面是为我们的例子创建的一个简单配置文件,让我们再来复习一遍:
- 定义根日志级别为
DEBUG
,并将名为FILE
的appender
添加其上。appender FILE
定义为org.apache.log4j.FileAppender
,它将日志写入log
目录下一个名为log.out
的文件中。layout
被定义为%m%n
,即先打印日志信息,然后打印换行。
Log4j.properties
文件的内容如下:
1 | ## 定义变量,保存日志文件所在的目录 |
Log4jExample.java
1 | package demo; |
运行效果
复制文件Log4jConfig/file/log4j.properties
,粘贴到src
目录下,然后运行Log4jExample.java
程序,此时项目根目录下,会生成一个log.out
文件:
展开/折叠
E:\workspacne_JDK8Tomcat8.5\Log4jDemo ├─lib\ │ ├─commons-logging-1.2.jar │ ├─log4j-1.2.17.jar │ ├─log4j-api-2.13.3.jar │ └─log4j-core-2.13.3.jar ├─log.out ├─Log4jConfig\ │ ├─file\ │ │ └─log4j.properties │ ├─file_and_stout\ │ │ └─log4j.properties │ ├─grammar\ │ │ └─log4j.properties │ ├─Level\ │ │ └─log4j.properties │ └─stdout\ │ └─log4j.properties └─src\ ├─demo\ │ ├─level\ │ │ ├─SetLevelByMethod.java │ │ └─SetLevleByConfig.java │ ├─Log4jExample.java │ └─method\ │ └─LoggerMethodTest.java └─log4j.properties
打开这个log.out文件,可以看到如下内容
1 | Hello this is a debug message |
日志输出到控制台
log4j.properties
1 | # Root logger option |
替换log4j配置文件 重新运行
复制文件/Log4jDemo/Log4jConfig/stdout/log4j.properties
,粘贴到src
目录下,然后运行Log4jExample.java
.此时日志将会输出在控制台.
1 | 2020-08-03 17:34:14 DEBUG Log4jExample:14 - Hello this is a debug message |
日志同时输出到文件和控制台
log4j.properties
1 | # 定义变量,保存日志文件所在的目录 |
复制文件/Log4jDemo/Log4jConfig/file_and_stout/log4j.properties
,覆盖src
目录下的log4j.properties
,删除掉项目根目录下的log.out
文件,然后运行Log4jExample.java
。
这样会重新生成log.out,并写一份日志写到该文件中:
1 | Hello this is a debug message |
另一份日志打印在控制台中:
1 | 2020-08-03 17:41:36 DEBUG Log4jExample:14 - Hello this is a debug message |