log4j的使用
2019-12-30 08:42:11来源:博客园 阅读 ()
log4j的使用
日志的作用
- 便于分析程序执行过程
- 方便调试
- 可以将业务数据存储到文件、数据库,有利于后期分析
log4j简介
log4j是 Apache 的一个开源项目,通过设置日志级别来指定输出哪些类型的日志。log4j功能强大:
- 可以将日志信息输出到控制台、文件、GUI 组件、甚至是数据库中
- 可以控制每一条日志的输出格式
log4j的日志级别
log4j在 org.apache.log4j.Level 类中定义了七种日志级别,级别从高到低依次为:
- OFF 最高日志级别,即关闭日志
- FATAL 导致应用程序退出的错误
- ERROR 运行发生错误,但仍不影响系统(程序)继续运行
- WARN 警告,即潜在的错误情形
- INFO 一般用在粗粒度级别上,记录程序全程执行过程,强调应用程序的运行全程
- DEBUG 一般用于细粒度级别上,对调试应用程序非常有帮助
- ALL 最低日志级别,记录所有级别的日志
一般只使用4个级别,优先级从高到低为 ERROR > WARN > INFO > DEBUG。
log4j的组成
log4j 主要由三部分组成:
(1) Loggers (日志记录器) 控制日志的输出级别与日志是否输出
(2)Appenders(输出端) 指定日志的输出到哪个地方(输出到控制台、文件等),常用的输出端:
- ConsoleAppender 将日志输出到控制台
- FileAppender 将日志输出到文件中
- RollingFileAppender 将日志信息输出到一个文件中,并指定文件尺寸,当文件大小达到指定尺寸时,会自动把文件改名,同时创建一个新的文件来保存日志
- DailyRollingFileAppender 将日志输出到文件中,会周期性输出到一个新的文件
- JDBCAppender 把日志信息保存到数据库中
(3)Layout(日志格式化器),常用的格式化器类型:
- HTMLLayout 格式化日志输出为HTML表格形式
- SimpleLayout 简单的日志输出格式化
- PatternLayout 最强大的格式化器,可自定义日志输出格式
log4j使用示例
(1)下载log4j,导入log4j.jar
注意是log4j,不是log4j2。
log4j的作者先开发了log4j,版本号以1开头。后面对log4j进行重构,改进了log4j的不足,即log4j2,版本号以2开头。log4j和log4j2的用法区别很大。
下载的log4j,有的版本含有log4j.jar、log4j-core.jar、log4j-api.jar3个jar包,我们只需导入log4j.jar。
(2)src下新建log4j的配置文件log4j.properties
### 日志记录器Logger的全局设置 ### #第一个参数指定输出的最低日志级别,即只输出该级别及以上级别的日志 #后面的参数指定要进行哪些配置 log4j.rootLogger = DEBUG,stdout,D,E ### 设置控制台输出 ### #stdout即standard out 标准输出,默认为控制台,所以可将stdout换为Console 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://logs/debug.log### #配置时,输出级别用首字母表示,D即DEBUG log4j.appender.D = org.apache.log4j.DailyRollingFileAppender #指定将日志输出到哪个文件中 log4j.appender.D.File = D://logs/debug.log #指定文件写入方式为追加 log4j.appender.D.Append = true #指定最低输出级别 log4j.appender.D.Threshold = DEBUG log4j.appender.D.DatePattern='.'yyyy-MM-dd-HH-mm #指定日志输出格式 log4j.appender.D.layout = org.apache.log4j.SimpleLayout ### 输出ERROR及以上级别的日志到D://logs/error.log ### log4j.appender.E = org.apache.log4j.RollingFileAppender log4j.appender.E.File =D://logs/error.log log4j.appender.E.Append = true log4j.appender.E.Threshold = ERROR #指定日志文件的最大尺寸 log4j.appender.E.MaxFileSize = 2KB #指定最大备份数为5 log4j.appender.E.MaxBackupIndex = 5 #指定日志输出格式使用自定义格式 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
此配置只是为了演示效果。
DailyRollingFileAppender 独有的选项
DatePattern='.'yyyy-ww
可选的值:
- '.'yyyy-MM 每月
- '.'yyyy-ww 每周
- '.'yyyy-MM-dd 每天
- '.'yyyy-MM-dd-a 每天两次
- '.'yyyy-MM-dd-HH 每小时
- '.'yyyy-MM-dd-HH-mm 每分钟
比如 '.'yyyy-MM-dd-HH-mm ,每分钟都产生一个同名的新文件来保存这分钟内的日志。
同名的新文件?就是在扩展名后加上时间,要查看需要改扩展名。
如果这分钟内没有日志输出,则不新建文件。
RollingFileAppender独有的选项
#指定日志文件的最大尺寸 MaxFileSize = 2KB #指定最大备份数为5 MaxBackupIndex = 5
最初的文件是error.log,达到指定的最大尺寸后,把这个文件重命名为error.log.1(扩展名后面加索引),再新建一个error.log来保存日志。
error.log达到最大尺寸后,把error.log.1重命名为error.log.2,把error.log重命名为error.log.1,再新建一个error.log来保存日志
.......
最多可有5个备份(1,2,3,4,5)。
有了5个备份,如果error.log达到了最大尺寸,把error.log.5删除,将error.log.4重命名为error.log.5,error.log.3重命名为error.log.4......error.log重命名为error.log.1,再新建一个error.log来保存日志。
日志输出格式
-
HTMLLayout
将日志以html代码的形式输出到指定文件中,将文件扩展名修改为.html即可查看效果:
-
SimpleLayout
级别 - 日志信息
DEBUG - This is debug message. INFO - This is info message. ERROR - This is error message.
-
PatternLayout
自定义格式,和 C 语言的 printf() 差不多,都是使用占位符:
%m 代码中指定的日志信息
%p 日志级别,DEBUG、INFO 等
%n 换行符
%c 打印语句所属的类的全名
%t 产生该日志的线程全名
%d 服务器当前时间,可在后面指定格式,比如 %d{yyyy年MM月dd日 HH:mm:ss}
%l 日志时间发生的位置,包括类名、发生的线程,以及在代码中的行数,如:Test.main(Test.java:10)
%F 日志消息产生时所在文件的文件名
%L 代码所在行号
%% 输出一个 %
可指定宽度、对齐方式:
%5p 宽度是5,字符个数小于5时,默认右对齐
%-5p 宽度是5,字符个数小于5时,左对齐
(3)src下新建测试类test.Log4jTest
package test; import org.apache.log4j.Logger; public class Log4jTest { public static void main(String[] args) { // 获取当前类的Logger Logger logger = Logger.getLogger(Log4jTest.class); // 输出DEBUG级别的日志,参数为日志信息 logger.debug("This is debug message."); // 输出INFO级别的日志 logger.info("This is info message."); // 输出ERROR级别的日志 logger.error("This is error message."); } }
说明
log4j可单独使用,单独使用时只需添加log4j.jar包。
如果要在其他框架中使用log4j,一般还要下载添加apache的commons-logging.jar。
因为log4j实现了记录日志的功能,commons-logging.jar定义了日志接口,commons-logging本身并不具备记录日志的功能,二者的关系是接口-实现类的关系,引入commons-logging.jar,使得框架与日志的耦合从类降到了接口。
附 log4j常用配置
### 日志记录器Logger的全局设置 ### 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及以上级别的日志到文件 ### log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File =D://log/debug/debug.log log4j.appender.D.Append = true log4j.appender.D.Threshold = ERROR log4j.appender.D.DatePattern='.'yyyy-MM-dd 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及以上级别的日志到文件 ### log4j.appender.E = org.apache.log4j.DailyRollingFileAppender log4j.appender.E.File =D://log/error/error.log log4j.appender.E.Append = true log4j.appender.E.Threshold = ERROR log4j.appender.E.DatePattern='.'yyyy-MM-dd 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
原文链接:https://www.cnblogs.com/chy18883701161/p/12117192.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 聊聊 OAuth 2.0 的 token expire_in 使用 2020-06-08
- 为什么阿里巴巴Java开发手册中强制要求接口返回值不允许使用 2020-06-06
- 学习笔记之方法引用 2020-06-06
- idea使用小技巧(一) 2020-06-05
- 用斗地主的实例学会使用java Collections工具类 2020-06-05
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash