05 Log4j

目录

Log4j简介

Log4j日志级别

第一个Log4j日志文件

SpringBoot  集成 Log4j


Log4j简介

Log4j 的全称为 Log for java,即专门用于 Java 语言的日志记录工具。

日志信息根据用途与记录内容的不同,分为 调试日志运行日志异常日志 等。

Log4j日志级别

由高到低,分为六个级别:

  • fatal(致命的)  
  • error
  • warn
  • info
  • debug
  • trace(堆栈)

第一个Log4j日志文件

Slf4j简介

slf4j 的全称是 Simple Loging Facade For Java,即它仅仅是一个为 Java 程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就比如 JDBC 一样,只是一种规则而已。所以单独的 slf4j 是不能工作的,必须搭配其他具体的日志实现方案,比如 apache 的 org.apache.log4j.Logger,JDK 自带的 java.util.logging.Logger 以及 log4j 等。

添加依赖

继续之前04的项目

pom.xml增加

 <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.25</version>
</dependency>

配置文件log4j.properties(必须叫这个名字)

在src/main/resources下创建log4j.properties

#根日志,配置了日志级别为INFO,预定义了console,file两种附加器
log4j.rootLogger=INFO, console, file
#console附加器,日志输出在控制台,采用匹配器布局模式,日志输出格式
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %p [%c] - %m%n
#file附加器,每天产生一个日志文件,输出在logs/log.log,采用匹配器布局模式,日志文件最大值,最多纪录文件数,日志格式
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=logs/log.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.MaxFileSize=1024KB
log4j.appender.A3.MaxBackupIndex=10
log4j.appender.file.layout.ConversionPattern=%d %p [%c] - %m%n

 log4j.properties 是专门用于控制日志输出的。其主要进行三方面控制:

  • 输出位置:控制日志将要输出的位置,是控制台还是文件等。
  • 输出布局:控制日志信息的显示形式。
  • 输出级别:控制要输出的日志级别。

由两个对象组成:日志附加器与根日志。

根日志,即为 Java 代码中的日志记录器,其主要由两个属性构成:日志输出级别与日志附加器。

日志附加器,则由日志输出位置定义,由其它很多属性进行修饰,如输出布局、文件位置、文件大小等。

常用的附加器实现类

org.apache.log4j.ConsoleAppender:日志输出到控制台

org.apache.log4j.FileAppender:日志输出到文件

org.apache.log4j.RollingFileAppender:当日志文件大小到达指定尺寸的时候将产生一个新的日志文件

org.apache.log4j.DailyRollingFileAppender:每天产生一个日志文件

常用布局类型

org.apache.log4j.HTMLLayout:网页布局,以 HTML 表格形式布局

org.apache.log4j.SimpleLayout:简单布局,包含日志信息的级别和信息字符串

org.apache.log4j.PatternLayout:匹配器布局,可以灵活地指定布局模式。其主要是通过设置 PatternLayout 的 ConversionPattern 属性值来控制具体输出格式的 。

打印参数: Log4J 采用类似 C 语言中的 printf 函数的打印格式格式化日志信息

%m:输出代码中指定的消息

%p:输出优先级,即 DEBUGINFOWARNERRORFATAL

%r:输出自应用启动到输出该 log 信息耗费的毫秒数

%c:输出所属的类目,通常就是所在类的全名

%t:输出产生该日志事件的线程名

%n:输出一个回车换行符,Windows 平台为 /r/n,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 )

测试日志输出

创建类testLog4j
package com.example.hello.spring;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class testLog4j {
    public static final Logger logger= LoggerFactory.getLogger("testLog4j.class");
    public static void main(String[] args) {
       logger.info("info");
       logger.warn("warn");
       logger.error("error");
       logger.debug("debug");
       String s1="hello";
       String s2 ="lof4j";
       logger.info("message is:{}{}",s1,s2);//{}为占位符
    }
}

控制台输出如下

日志为

占位符说明

打日志的时候使用了 {} 占位符,这样就不会有字符串拼接操作,减少了无用 String 对象的数量,节省了内存。并且,记住,在生产最终日志信息的字符串之前,这个方法会检查一个特定的日志级别是不是打开了,这不仅降低了内存消耗而且预先降低了 CPU 去处理字符串连接命令的时间。

SpringBoot  集成 Log4j

  
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <!-- 排除自带的logback依赖 -->
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <!-- springboot-log4j -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j</artifactId>
        <version>1.3.8.RELEASE</version>
    </dependency>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值