Java 项目日志实例基础:Log4j

这篇具有很好参考价值的文章主要介绍了Java 项目日志实例基础:Log4j。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

点击下方关注我,然后右上角点击...“设为星标”,就能第一时间收到更新推送啦~~~

介绍几个日志使用方面的基础知识。

1

Log4j

Java 项目日志实例基础:Log4j,java,log4j,开发语言

1、Log4j 介绍

Log4j(log for java)是 Apache 的一个开源项目,通过使用 Log4j,我们可以控制日志信息输出到日志文件、也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用程序的代码。

2、Log4j 使用步骤说明

(1)选择 jar 包

加入 log4j-1.2.17.jar 到 Libraries 下,如果使用 maven 项目,也可以选择在 pom.xml 中新增依赖如下:

<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

(2)log4j.properties 配置

Log4j 有三个主要组件:记录器, appender 和布局。这三种类型的组件协同工作,使开发人员能够根据消息类型和级别记录消息,并在运行时控制这些消息的格式和报告位置。

Log4j 建议只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。

比如定义了 INFO 级别,只有等于及高于这个级别的才进行处理,则应用程序中所有 DEBUG 级别的日志信息将不被打印出来。ALL,打印所有的日志;OFF,关闭所有的日志输出。

appenderName,就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。

在 src 根目录下建立 log4j.properties,根据自己的需求,相应的修改其中的配置,其内容如下所示:

#配置根Logger
#改代码表示输输出info级别以上的日志,文件分别输出,一个是file,一个是error
    log4j.rootLogger=info,file,error 
#配置file日志信息输出目的地Appender
#定义名为file的输出端是每天产生一个日志文件
    log4j.appender.file=org.apache.log4j.DailyRollingFileAppender    #指定日志信息的最低输出级别位INFO,默认为DEBUG。
    log4j.appender.file.Threshold=INFO    #指定当前消息输出到jpm/log4j/log.log文件中
    log4j.appender.file.File=/jpm/log4j/log.log    #指定按天来滚动日志文件
    log4j.appender.file.DatePattern=yyyy-MM-dd    #配置日志信息的格式(布局)Layout是可以灵活地指定布局模式
    log4j.appender.file.layout=org.apache.log4j.PatternLayout    #格式化日志,Log4j采用类似C语言中的printf函数的打印格式格式化日志信息
    log4j.appender.file.layout.ConversionPattern=[%d{yyyy-MM-ddHH:mm:ss}][%-5p][jpm-%c{1}-%M(%L)]-%m%n    #指定输出信息的编码
    log4j.appender.file.encoding=UTF-8
#配置error日志信息输出目的地Appender
#定义名为error的输出端是每天产生一个日志文件
    log4j.appender.error=org.apache.log4j.DailyRollingFileAppender    #指定日志信息的最低输出级别位ERROR,默认为DEBUG。
    log4j.appender.error.Threshold=ERROR    #指定当前消息输出到jpm/log4j/error.log文件中
    log4j.appender.error.File=/jpm/log4j/error.log    #指定按月来滚动日志文件
    log4j.appender.error.DatePattern=yyyy-MM    #配置日志信息的格式(布局)Layout是可以灵活地指定布局模式
    log4j.appender.error.layout=org.apache.log4j.PatternLayout    #格式化日志,Log4j采用类似C语言中的printf函数的打印格式格式化日志信息
    log4j.appender.error.layout.ConversionPattern=[%d{yyyy-MM-ddHH:mm:ss}][%-5p][jpm-%c{1}-%M(%L)]-%m%n    #指定输出信息的编码
    log4j.appender.error.encoding=UTF-8
#使某个功能的日志单独输出到指定的日志文件
    log4j.logger.saveUserLog=INFO,saveUserLog    #该配置就是让job的日志只输出到自己指定的日志文件中,表示Logger不会在父Logger的appender里输出,默认为true。
    log4j.additivity.saveUserLog=false
    log4j.appender.saveUserLog=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.saveUserLog.File=/jpm/log4j/saveUserLog.log
    log4j.appender.saveUserLog.DatePattern=yyyy-MM-dd
    log4j.appender.saveUserLog.Append=true
    log4j.appender.saveUserLog.layout=org.apache.log4j.PatternLayout
    log4j.appender.saveUserLog.layout.ConversionPattern=%m%n
    log4j.appender.error.encoding=UTF-8

(3)输出日志的代码示例

package jpm;    
import org.apache.log4j.Logger;    
public class TestLog4j {        
public static void main(String[] args) {            
final Logger logger = Logger.getLogger(TestLog4j.class);            final Logger saveUserLog = Logger.getLogger("saveUserLog");            if (logger.isDebugEnabled()) {
    logger.debug("debug");
    logger.info("info");
    logger.error("error");
    saveUserLog.info("张三,男,26岁,北京大学,2018-05-19,学霸");
  }
}

4)以上代码示例生成的日志文件及日志详情

Java 项目日志实例基础:Log4j,java,log4j,开发语言

Java 项目日志实例基础:Log4j,java,log4j,开发语言

2

JUL ( java.util.logging

Java 项目日志实例基础:Log4j,java,log4j,开发语言

1、JUL( java.util.logging) 介绍

Java Logging API 是 Sun 公司于 2002 年 5 月正式发布的。它是自 J2SE 1.4 版本开始提供的一个新的应用程序接口,JUL(在 java.util.logging 包下),需 JDK1.4 版本以上才能支持,java.util.logging.* 包是 JDK 的日志记录 API。

Java 项目日志实例基础:Log4j,java,log4j,开发语言

强烈不推荐使用 java.util.logging 记录日志,因此这里不提供对应示例。

3

java common logging

Java 项目日志实例基础:Log4j,java,log4j,开发语言

commons-logging 提供的是一个日志接口,是为那些需要建立在不同环境下使用不同日志架构的组件或库的开发者创建的,其中包括 log4j 以及 Java log 的日志架构。commons-logging 有两个基本的抽象类:Log(基本记录器) 和 LogFactory(负责创建 Log 实例)。把日志信息抽象成 commons-logging 的 Log 接口,并由 commons-logging 在运行时决定使用哪种日志架构。因为 Log4j 的强大功能,commons-logging 一般会和 Log4j 一起使用,这几乎成为了 Java 日志的标准工具。

4

SLF4J 介绍

Java 项目日志实例基础:Log4j,java,log4j,开发语言

SLF4J 全称为 Simple Logging Facade for JAVA,即 java 简单日志门面。和 commons-loging 一样也是对不同日志框架提供的一个门面封装,可以在部署的时候不修改任何配置即可接入一种日志实现方案,能支持多个参数,并通过 {} 占位符进行替换。

看这个 Log4J 示例:   

Logger.debug("Hello " + name);

由于字符串拼接的问题(注:上述语句会先拼接字符串,再根据当前级别是否低于 debug 决定是否输出本条日志,即使不输出日志,字符串拼接操作也会执行),因此许多公司一般强制使用下面的语句,这样只有当前处于DEBUG级别时才会执行字符串拼接:

if (logger.isDebugEnabled()) {
  LOGGER.debug(“Hello ” + name);
}

它避免了字符串拼接问题,可是有点太繁琐了。而 SLF4J 提供下面这样简单的语法:

LOGGER.debug("Hello {}", name);

它的形式类似第一条示例,但是又没有字符串拼接问题,也不像第二条那样繁琐。

正是因为 SLF4J 的这个占位符功能,使得人们越来越多的地使用 SLF4J 这个接口用到实际开发项目中。

为什么需要日志接口,直接使用具体的实现不就行了吗?

接口用于定制规范,可以有多个实现,使用时是面向接口的(导入的包都是 SLF4J 的包或者是 JCL 的包,而不是具体某个日志框架中的包),即直接和接口交互,不直接使用实现,所以当需要更换实现的时候,直接更换实现就可以了,而不用更改代码中的日志相关代码。

比如:SLF4J 定义了一套日志接口,项目中使用的日志框架是 log4j,开发中调用的所有接口都是 SLF4J 的,不直接使用 log4j,项目应用调用 SLF4J 的接口,SLF4J 的接口去调用 log4j 的实现,整个应用程序并没有直接使用 log4j,当项目需要更换更加优秀的日志框架时(如 logback)只需要引入 logback 的 jar 和 logback 对应的配置文件即可,完全不用更改 Java 代码中的日志相关的代码 logger.info(“hello world”),也不用修改日志相关的类的导入的包(import org.slf4j.Logger; import org.slf4j.LoggerFactory;)。

因此日志门面的使用,为后续具体日志系统的实现更换带来了方便。

后面为大家介绍项目中的 Logback 使用示例。文章来源地址https://www.toymoban.com/news/detail-658698.html

到了这里,关于Java 项目日志实例基础:Log4j的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • logging.level的含义及设置 【java 日志 (logback、log4j)】

    日志级别 tracedebuginfowarnerrorfatal 常用的有:debug,info,warn,error 通常我们想设置日志级别,会用到 logging.level.root=info logging.level设置日志级别,后面跟生效的区域。root表示整个项目。 也可以写某个包,或者某个类。 例如:logging.level.com.ali.service=error。在com.ali.service包下所有

    2024年02月10日
    浏览(27)
  • JAVA中使用log4j及slf4j进行日志输出的方法

    JAVA中输出日志比较常用的是log4j,这里讲下log4j的配置和使用方法,以及slf4j的使用方法。 一、下载log4j的架包,并导入项目中,如下: 二、创建log4j.properties配置文件 1、log4j配置文件的位置: (1)如果是java project项目,则在项目的根目录下创建log4j.properties而不是在src目录下

    2024年02月07日
    浏览(29)
  • Spring Boot中集成各种日志框架Logback、Log4j2和Java Util Logging

    Spring Boot支持多种日志框架,包括Logback、Log4j2和Java Util Logging(JUL)。在Spring Boot中,可以通过简单的配置来集成这些热门的日志框架。 下面将详细说明如何集成Logback、Log4j2和Java Util Logging,并提供相应的源代码示例。 集成Logback: Logback是Spring Boot默认的日志框架,它提供了高

    2024年02月05日
    浏览(40)
  • 【日志加载 log4j】

    2.编写配置 3.获取日志对象 4.1 Loggers 记录器 4.2 Appenders 输出源 4.3 Layouts 布局 5. 配置文件 log4j.properties

    2024年02月11日
    浏览(72)
  • java 项目配置slf4j - log4j2

    2024年02月13日
    浏览(28)
  • 使用Log4j与log4j2配置mybatisplus打印sql日志

    环境:项目非完全spring项目,没有spring的配置文件。执行sql时老是不打印sql语句。因此进行修改,过程比较坎坷,记录一下。 我尝试使用log4j和log4j2进行配置 最终把这两种全部配置记录上 Log4j配置 如果项目用的是log4j需要进行配置打印sql的步骤 首先引入log4j的包 配置一下l

    2024年02月04日
    浏览(43)
  • 用Log4j 2记录日志

    下面代码示例的maven工程中的pom.xml文件中需要增加对Log4j 2的依赖: 配置说明参考文档 https://logging.apache.org/log4j/2.x/manual/configuration.html 配置文件中pattern的详细说明 例如,下面配置文件片段中用到了pattern: pattern的详细说明请参考: https://logging.apache.org/log4j/2.x/manual/layouts.ht

    2024年02月14日
    浏览(77)
  • log4j日志框架的使用

    log4j的配置文件可以理解成有2部分 1根日志记录器  2 各appender(输出源)配置 入口 loggerManager的静态代码块 在loggerManager的静态代码块中,完成对配置文件的读取和解析 然后组装成框架的Logger对象、appender对象完成初始化操作 当调用logger.info打印日志时,和logback的流程基本一样

    2024年02月04日
    浏览(41)
  • Log4j疯狂写日志问题排查

    最近有个 Java 系统上线后不久就收到了磁盘使用率告警,磁盘使用率已经超过了 90% 以上,并且磁盘使用率还在不停增长。 由于服务器磁盘被打满,导致了系统正常的业务日志无法继续打印,严重影响了系统的可靠性。 刚开始收到磁盘告警的时候,怀疑是日志级别问题,业务

    2024年02月13日
    浏览(39)
  • C++日志系统log4cxx

    log4cxx有三个主要组件: loggers (记录器), appenders (输出源)和 layout (布局)。可以简单理解为日志类别,要输出的地方,输出形式。 Logger 创建Logger Logger是有一个String类的名字识别的,且大小写敏感。 root logger是所有logger的祖先,是一直存在的, 通过Logger.getRootLogger()获得,

    2024年02月16日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包