log4j详细介绍

作者: 明天你好向前奔跑 | 来源:发表于2017-06-27 13:22 被阅读138次

log4j是什么

* Apache的开源项目log4j是一个功能强大的日志组件(框架),提供方便的日志记录。

日志的作用

  • 第一用途:编写程序的时候,进行调试。
    • 类似于:大家使用System.out.print()来调试代码
  • 第二用途:项目上线(商业运行),查看系统的运行状态
  • 日志是用来记录信息的,比如服务器的日志主要是用来记录一些访问信息,以便出现状况时,可以根据日志来判断原因。

聊聊System.out.print()的缺陷

  • 过于简单,只能输出在控制台
  • 不能写入文件系统
  • 日志不能分级别,没有开关

log4j的使用

使用1:我们自己用

  1. 导入jar包
  2. 编写log4j的配置文件
  3. 自己代码中的实际使用

示例代码:

import org.apache.log4j.Logger;
import org.junit.Test;

public class Junit4Test {
    static Logger logger = Logger.getLogger(Junit4Test.class);

    @Test
    public void test(){
        logger.error("junit4的log4j...");
    }
}

使用2:导入的框架使用

解读log4j.properties配置文件

### 输出源1:名字叫stdout, 其输出到控制台 ###
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=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### 输出源2:名字叫file,其输出到文件 ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=d:\\mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### 根记录器(控制器):级别是:info, 开启输出源:stdout ###
log4j.rootLogger=info, stdout

rootLogger(记录器,控制器)

  1. 配置根rootLogger,其语法为:log4j.rootLogger = [ level ] , appenderName, appenderName, …

  2. level:是日志记录的优先级,分为(高)OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL(低)或者自定义的级别。

    • Log4j建议只使用四个级别,优 先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。
    • 定义了ERROR级别:FATAL,ERROR级别日志可以输出,WARM, INFO, DEBUG级别日志,不输出。
    • 定义成debug:
  1. appenderName就是指B日志信息输出到哪个地方。您可以同时指定多个输出目的地。

Appender(输出源)

  1. 配置日志信息输出目的地Appender,其语法为:

     log4j.appender.appenderName = fully.qualified.name.of.appender.class  
     log4j.appender.appenderName.option1 = value1  
     …  
     log4j.appender.appenderName.option = valueN
    
  2. log4j提供的appender有以下几种:

     org.apache.log4j.ConsoleAppender(控制台),  
     org.apache.log4j.FileAppender(文件),  
     org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),  
     org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),  
     org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
    
  3. 配置日志信息的格式(布局),其语法为:

     log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class  
     log4j.appender.appenderName.layout.option1 = value1  
     …  
     log4j.appender.appenderName.layout.option = valueN
    
  4. 其中,Log4j提供的layout有以下几种:

     org.apache.log4j.HTMLLayout(以HTML表格形式布局),  
     org.apache.log4j.PatternLayout(可以灵活地指定布局模式),  
     org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),  
     org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
    
  5. Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:

     %m 输出代码中指定的消息
     %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL  
     %r 输出自应用启动到输出该log信息耗费的毫秒数  
     %c 输出所属的类目,通常就是所在类的全名  
     %t 输出产生该日志事件的线程名  
     %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”  
     %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921  
     %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
    

slf4j简介

  • 定义了一个接口
  • 需要一个真正做事的,可以是log4j,或者其他。

log4j日志的缺陷

  • 缺陷:如果你使用别人的框架,你不会喜欢别人指定的具体日志组件。

slf4j的介绍

  1. slf4j不同于其他日志类库,与其它有很大的不同。slf4j(Simple logging Facade for Java)不是一个真正的日志实现,而是一个抽象层( abstraction layer),它允许你在后台使用任意一个日志类库。
  • 体会一句话:如果你使用别人的框架,你不喜欢别人了指定的具体日志组件(框架)。
  1. slf4j所提供的核心API是一些接口以及一个LoggerFactory的工厂类。

  2. slf4j提供了统一的记录日志的接口,只要按照其提供的方法记录即可。不需要在代码中或配置文件中指定你打算使用那个具体的日志系统。

  3. 最终日志的格式、记录级别、输出方式等通过具体日志系统的配置来实现,可以灵活切换日志系统。

slf4j使用举例

  1. 导入slf4j的jar
    • slf4j-api-1.6.1.jar
  1. 编写代码

     import org.slf4j.Logger;
     import org.slf4j.LoggerFactory;
     
     publicclass HelloSlf4j {
          static  Logger logger = LoggerFactory.getLogger(HelloSlf4j.class);
         publicstaticvoid main(String[] args) {
             logger.debug("This is debug message");
             logger.info("This is info message");
             logger.warn("This is warn message");
             logger.error("This is error message");
         }
     }
    
  2. 真正使用

第一步:导入jar

  • 使用slf4j进行日志输出时,slf4j-api-1.6.1.jar这个jar包,是不够的。因为,这里面只有一个抽象层,没有真正的日志实现。
  • 例如:底层采用log4j这个真正做事的日志框架,还需要导入:
    • log4j-1.2.16.jar(log4j自身的jar包)
    • slf4j-log4j12-1.7.2.jar(log4j与slf4j的适配层)

第二步:编写配置文件

  • 直接使用log4j的配置文件即可

相关文章

  • log4j

    .log4j介绍 1通过log4j可以看到程序运行过程中更详细的信息 (1)经常使用log4j查看日志 2使用 (...

  • log4j详细介绍

    log4j是什么 *Apache的开源项目log4j是一个功能强大的日志组件(框架),提供方便的日志记录。 日志的...

  • Log4j真的超简单

    首先,这里并没有非常详细的来介绍log4j。只是按照步骤、流程来明白怎么去使用。更多细节还是请阅读log4j官网。...

  • log4j.properties应用知识

    其他例子参考log4j详细介绍1log4j详细介绍22.自动记载机制 一个java项目是如何自动加载log4j.p...

  • 阿里巴巴开发手册强制使用SLF4J作为门面担当的秘密,我搞清楚了

    之前已经详细、全面地介绍了 Log4j[https://mp.weixin.qq.com/s/AXgNnJe8dj...

  • RMI、JNDI、LDAP介绍+log4j漏洞分析

    介绍 本篇主要介绍java的RMI、JNDI、LDAP,在后面会详细分析log4j的jndi注入原理。 什么是RM...

  • log4j配置文档

    Log4j简介 通过使用Log4j可以看到程序运行过程中更详细的信息经常在系统之使用Log4j查看日志 使用方法 ...

  • log4j

    1、通过log4j可以看到程序运行过程中的更详细信息 经过log4j查看日志 2、使用 导入log4j的jar包i...

  • 开源协议介绍

    详细介绍 MPL (Mozilla Public License) 协议 详细介绍 MIT 协议 详细介绍 Apa...

  • CVE-2021-44228漏洞复现

    Apache Log4j2远程代码执行漏洞(CVE-2021-44228) 详细描述 Apache Log4j是A...

网友评论

本文标题:log4j详细介绍

本文链接:https://www.haomeiwen.com/subject/uqcecxtx.html