1、写在前面
Log4j已经成为开发必须的工具之一,在此记录学习过程
2、核心操作
- Log4j特点学习
- 编写Log4j学习Demo
- Log4学习资料:Log4学习资料
3、具体操作
3.1、Log4j特点学习
日志级别由高到低,共分 6 个级别:
- fatal(致命的)
- error
- warn
- info
- debug
- trace(堆栈)
什么是日志附加器?
所谓日志附加器,就是为日志记录器附加上很多其它设置信息。附加器的本质是一个接口,其定义语法为:log4j.appender.appenderName
= 输出位置
常用的附加器实现类
-
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 属性值来控制具体输出格式的 。
3.2、编写Log4j学习Demo
slf4j 的全称是 Simple Loging Facade For Java,即它仅仅是一个为 Java 程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就比如 JDBC 一样,只是一种规则而已。所以单独的 slf4j 是不能工作的,必须搭配其他具体的日志实现方案,比如 apache 的 org.apache.log4j.Logger,JDK 自带的 java.util.logging.Logger 以及 log4j 等。
- 添加pom依赖
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.17.RELEASE</version>
</dependency>
<!--测试框架junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!--日志框架log4j-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
</dependencies>
- 添加log4j.properties
log4j.rootLogger=INFO, console, file
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
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
- 编写日志案例1
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Created with IntelliJ IDEA.
* User: enzoism
* Date: 2020/2/4- 16:16
*/
@Slf4j
public class TestLog {
// Logger logger = LoggerFactory.getLogger(TestLog.class);
@Test
public void testLog() {
log.info("-------------------->slf4j for info");
log.debug("-------------------->slf4j for debug");
log.error("-------------------->slf4j for error");
log.warn("-------------------->slf4j for warn");
String message1 = "Hello ";
String message2 = "SLF4J";
log.info("-------------------->slf4j message is : {}, {}", message1, message2);
}
}
- 编写日志案例2
import com.enzoism.spring.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* Created with IntelliJ IDEA.
* User: enzoism
* Date: 2020/2/4- 15:24
*/
@Service
@Slf4j
public class UserServiceImpl implements UserService{
public void sayHello() {
log.info("-------------Hello,Spring!");
System.out.println("Hello,Spring!");
}
}