Spring整合Log4j

淡淡的烟草味﹌ 2023-03-01 12:47 23阅读 0赞

目录

      • log4j简介
      • log4j的日志级别
      • log4j的组成
      • log4j的使用
      • 附:slf4j的使用

log4j简介

日志的作用

  • 可分析程序执行过程,便于调试
  • 可将业务数据存储到文件、数据库,便于后期分析

log4j是一个功能强大的日志框架

  • 可以将日志信息输出到控制台、文件、GUI 组件、数据库中
  • 可以指定日志输出格式

log4j的日志级别

一共七种,从高到低依次为

  • OFF 最高日志级别,即关闭日志
  • FATAL  导致应用程序退出的错误
  • ERROR 运行发生错误,但不影响程序继续运行
  • WARN
  • INFO
  • DEBUG
  • ALL

一般只使用4个级别,从高到低为 ERROR > WARN > INFO > DEBUG

log4j的组成

log4j 主要由三部分组成

1、Loggers  日志记录器

控制是否输出日志、日志输出级别

2、Appenders  输出端

指定日志输出终端

  • ConsoleAppender 控制台
  • FileAppender 文件
  • JDBCAppender 数据库
  • RollingFileAppender 文件,可指定文件最大尺寸,当文件大小达到指定最大尺寸时,会创建一个新文件来保存日志

    指定单个日志文件的最大尺寸

    MaxFileSize = 2KB

    指定最大备份数(日志文件最多允许保留多少个)

    MaxBackupIndex = 5

  • DailyRollingFileAppender 文件,将特定时间段输出到一个新的文件

    指定输出周期,将一周的日志输出到一个文件中

    DatePattern=’.’yyyy-ww

yyyy-MM 每月
yyyy-ww 每周
yyyy-MM-dd 每天
yyyy-MM-dd-a 每天两次
yyyy-MM-dd-HH 每小时
yyyy-MM-dd-HH-mm 每分钟

3、Layout 日志格式化器

用于指定日志输出格式

  • HTMLLayout html表格
  • SimpleLayout 简单格式
  • PatternLayout 可自定义日志输出格式

PatternLayout使用占位符指定格式,常用的占位符如下

  • %m 代码中指定的日志信息
  • %p 日志级别,eg. DEBUG、INFO
  • %n 换行
  • %c 所在类的类名
  • %t 所在的线程名
    • %F 所在文件的文件名
  • %L 所在行号
  • %l 所在位置,类名+线程名+文件名+行号,eg. UserService.main(UserService.java:10)
  • %d 服务器当前时间,可在{ }中指定时间格式,eg. %d{yyyy年MM月dd日 HH:mm:ss}
  • %% 输出一个 %

可指定宽度、对齐方式,eg

  • %5p 宽度是5,字符个数小于5时,右对齐
  • %-5p 左对齐

log4j的使用

依赖

  1. <dependency>
  2. <groupId>log4j</groupId>
  3. <artifactId>log4j</artifactId>
  4. <version>1.2.17</version>
  5. </dependency>
  6. <!-- 如果是在其它框架中使用log4j,往往需要引入commons-logging -->
  7. <!-- commons-logging是日志接口,log4j是其中的一种实现 -->
  8. <dependency>
  9. <groupId>commons-logging</groupId>
  10. <artifactId>commons-logging</artifactId>
  11. <version>1.2</version>
  12. </dependency>

log4j.properties

  1. ### 日志记录器Logger的全局设置,最低级别指定为DEBUG ###
  2. log4j.rootLogger = DEBUG,stdout,D,E
  3. ### 输出到控制台 ###
  4. log4j.appender.stdout = org.apache.log4j.ConsoleAppender
  5. log4j.appender.stdout.Target = System.out
  6. #输出级别
  7. log4j.appender.stdout.Threshold = DEBUG
  8. log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
  9. log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{ yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
  10. ### 输出到文件 ###
  11. log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
  12. log4j.appender.D.File =D://log/debug/debug.log
  13. log4j.appender.D.Append = true
  14. #输出级别
  15. log4j.appender.D.Threshold = ERROR
  16. log4j.appender.D.DatePattern='.'yyyy-ww
  17. log4j.appender.D.layout = org.apache.log4j.PatternLayout
  18. log4j.appender.D.layout.ConversionPattern = %d{ yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

在java代码中输出日志

  1. class Xxx{
  2. // 获取当前类的Logger对象,注意导入的Logger是log4j中的
  3. private static Logger logger = Logger.getLogger(Xxx.class);
  4. public void xxx() {
  5. logger.info("xxx");
  6. logger.warn("xxx");
  7. logger.error("xxx");
  8. }
  9. }

附:slf4j的使用

  1. <dependency>
  2. <groupId>org.slf4j</groupId>
  3. <artifactId>slf4j-api</artifactId>
  4. <version>1.7.30</version>
  5. </dependency>
  6. // 这个Logger导入的是slf4j中的类
  7. private static Logger logger = LoggerFactory.getLogger(Xxx.class);

发表评论

表情:
评论列表 (有 0 条评论,23人围观)

还没有评论,来说两句吧...

相关阅读

    相关 MyBatis整合Log4j

    今天就来说一下我们如何在窗口中看到我们执行了sql语句,使用Log4j工具 第一步:首先我们创建一个Maven项目: 导入必须的依赖: <dependenci

    相关 Spring Boot 整合Log4j2

    写在前面 学习Log4j2与Spring Boot的整合是为了完成我的ELK体系中的日志生产这一部分,通过学习Log4j2中的语法以及定义规范来生产日志. 自定义日志

    相关 Spring整合log4j日志组件

    Log4j是Apache的一个开放源代码项目,通过使用Log4j,控制日志信息输送的目的地可以为控制台、文件、数据库、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX