我的编程空间,编程开发者的网络收藏夹
学习永远不晚

log4j有什么用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

log4j有什么用

小编给大家分享一下log4j有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

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)class="lazy" data-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 ,每分钟都产生一个同名的新文件来保存这分钟内的日志。

同名的新文件?就是在扩展名后加上时间,要查看需要改扩展名。

log4j有什么用

如果这分钟内没有日志输出,则不新建文件。

RollingFileAppender独有的选项

#指定日志文件的最大尺寸
MaxFileSize = 2KB
#指定最大备份数为5
MaxBackupIndex = 5

log4j有什么用

最初的文件是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)class="lazy" data-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

以上是“log4j有什么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

log4j有什么用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

log4j additivity属性的作用是什么

log4j中的additivity属性用于控制日志事件的传递行为。默认情况下,logger会将日志事件传递给其父级logger以进行日志记录。这意味着,如果一个logger设置了additivity为true,则它的日志事件将被传递给其父
2023-10-25

为什么推荐你使用 logback 取代 log4j

Logback是由log4j创始人设计的另一个开源日志组件,它当前分为下面下个模块。

log4j配置的步骤是什么

配置log4j的步骤如下:1. 下载log4j库:首先需要下载log4j的JAR文件,可以从官方网站或Maven仓库下载。2. 创建配置文件:在项目的classpath下创建一个名为log4j.properties或log4j.xml的配置
2023-09-09

Java中Log4j日志怎么用

这篇文章给大家分享的是有关Java中Log4j日志怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。为什么要用日志?我们知道,程序在运行过程中会产生很多很多信息,比如在几点几分的时候运行了,运行的结果是怎么样的
2023-06-29

Apache Log4j 2.17.0能够解决什么问题

这篇文章主要为大家展示了“Apache Log4j 2.17.0能够解决什么问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Apache Log4j 2.17.0能够解决什么问题”这篇文章吧。
2023-06-22

log4j反序列化的原理是什么

log4j反序列化的原理是利用Java的反序列化机制,通过恶意构造的序列化数据,触发目标系统中的反序列化操作,从而导致可控的代码执行。具体来说,log4j中的LogEvent对象在序列化过程中,会将日志内容写入到一个Base64编码的字符串
2023-08-15

怎么使用Serilog替换掉Log4j

这篇文章主要讲解了“怎么使用Serilog替换掉Log4j”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Serilog替换掉Log4j”吧!为什么使用SerilogSerilog 是
2023-06-29

log4j打印异常堆栈的方法是什么

在log4j中,要打印异常堆栈信息,可以使用以下方法:1. 使用`org.apache.log4j.Logger`类的`error`方法,将异常对象作为参数传递给该方法。例如:```javaimport org.apache.log4j.L
2023-09-27

log4j指定配置文件的方法是什么

在使用log4j时,可以通过以下几种方法来指定配置文件:1. 将log4j的配置文件命名为log4j.properties或log4j.xml,并将其放置在类路径下。log4j会自动在类路径下查找并加载此文件作为默认配置文件。2. 通过系统
2023-10-09

log4j定时删除旧日志的方法是什么

在log4j中,可以使用`org.apache.log4j.rolling.RollingFileAppender`来实现定时删除旧日志文件的功能。该类是log4j的RollingFileAppender的子类,支持基于时间的日志滚动策略。
2023-09-16

Log4j关闭Spring和Hibernate日志打印方式是什么

这篇文章主要介绍“Log4j关闭Spring和Hibernate日志打印方式是什么”,在日常操作中,相信很多人在Log4j关闭Spring和Hibernate日志打印方式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希
2023-06-22

自定义log4j日志文件命名规则是什么

小编给大家分享一下自定义log4j日志文件命名规则是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!自定义log4j日志文件命名规则项目中的日志需要采用一致的命
2023-06-22

log4j动态修改日志级别的方法是什么

log4j的动态修改日志级别的方法是使用org.apache.log4j.LogManager类和org.apache.log4j.Level类。首先,通过LogManager类的getLogger方法获取到对应的Logger对象。例如,要
2023-09-16

springmvc中怎么利用Mybatis输出Log4j日志

springmvc中怎么利用Mybatis输出Log4j日志,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。第一种情况下面文档描述的mybatis本身内置很多种日志框架使用,所以
2023-06-20

为什么阿里巴巴禁止Java程序员直接使用Log4j和Logback?

我们本文将讲述如何在spring boot 中应用 logback+slf4j实现日志的记录。

应用程序开发人员现在需要做什么来对抗Log4j漏洞

看起来我们还没有听说过Log4j的终结。很明显,作为应用程序开发人员,您有很多工作要做,以在短期内查找、修复和防止Log4j问题,但从长远来看,您需要担心一些事情。

Apache通用日志工具commons-logging和Log4j怎么使用

Apache Commons Logging是一个通用的日志工具,它可以和不同的日志框架(如Log4j、Logback、java.util.logging等)一起使用。下面是使用commons-logging和Log4j的步骤:添加comm
2023-10-26

css是什么?有什么用?

CSS是什么东西?CSS,即层叠样式表(Cascading Style Sheets),是一种用于网页设计的样式语言。通过CSS,你可以改变HTML页面上各个元素的外观、布局和行为。CSS最初是由赛迪公司(斯佩克特公司)的开发者创建的,并于1996年成为一项业界标准。随着互联网的发展,在HTML语言出现之后,CSS已经成为了使用最广泛的网页设计工具之一。让我们来看一下CSS有哪
2023-05-14

编程热搜

目录