log4J日志管理的使用说明
版权声明:本文为 小异常 原创文章,非商用自由转载-保持署名-注明出处,谢谢!
本文网址:https://blog.****.net/sun8112133/article/details/81276020
我们先来说说什么是日志吧, 在项目中的日志其实就是用来记录我们程序运行的情况,当程序运行出来发生 异常时,让你能迅速的找到出现问题的地方,从而节约时间。对于一个大型项目来说,日志记录是必不可少的,它记录了对程序的每一次操作,以及当程序发生异常时的记录。对于开发人员后期的维护,提供了有用的第一手资料。
我们在对 Java程序 进行调制时,经常会用到 System.out.println()
语句,虽然它也能起到调制的作用,但是很不方便。比如说,有一个调试信息输出,我只要测试一下就不用了,这样我们得把这一行删掉,如果下次又想用了,那还得再加上去。这样是不是很麻烦呢? 别担心,当你用了日志管理技术后,只需要将日志的输出级别调高,那那些低级别的日志就不会输出了。如果以后我又想再看看那些日志的话,再把级别调低就可以了。这样是不是很方便呢?
本篇将会给大家介绍一种常用的日志管理小助手 —— “Log4J”,以一个简单的 小栗子 帮助初学者快速入门,本篇只对常用配置作介绍。。
本篇大体可以分为三大部分:
一、Log4J 简介
二、小栗子
三、配置文件中的常用属性说明
一、Log4J 简介
Log4J(log for java)是我们常用的日志管理小助手,它是 Apache的 一个开源项目,我们可以通过这个小助手很方便的将日志信息输出到控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等,而且也能控制每一条日志的输出格式,并且设置每一条日志信息的级别,这样我们能够更加细致地控制日志的生成过程。最令人兴奋的就是,这些所有的配置都可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。下面我们就通过一个 小栗子 来让你体验这位小助手的强大之处。
二、小栗子
1、准备工作
我们先新建一个项目,在项目下新建一个文件夹,起名叫 lib
。
2、加入 Log4J 的 jar包
加入 log4j-1.2.15.jar
(可以选择 Log4J 更高版本哦)到 lib
下。
3、在src下建立 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 %5p [%t] (%F:%L) - %m%n
# 设置输出端为“日志文件”,以下是此输出端的具体定义
log4j.appender.file=org.apache.log4j.FileAppender
# 设置日志文件存放的路径
log4j.appender.file.File=src/log.txt
# 设置日志文件最大容量为2KB,最好结合RollingFileAppender使用
#log4j.appender.file.MaxFileSize=2KB
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
3、新建一个测试类,其内容如下:
package com.hello;
import java.io.IOException;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class Main {
public static void main(String[] args) throws IOException {
// 获取日志管理器
Logger logger = Logger.getLogger(Main.class);
// 日志管理器配置文件位置
PropertyConfigurator.configure("src/log4j.properties");
// 日志记录
logger.warn("考试开始!");
logger.info("开始计算1+1");
System.out.println("1 + 1 = " + (1+1));
logger.info("开始计算1/0");
try {
System.out.println("1 / 1 = " + (1/0));
} catch (Exception e) {
logger.error("除数不能为0!!");
}
logger.warn("考试结束!");
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
4、好了,大功告成!我们来看看效果
在控制台上输出了以下内容:
细心的小伙伴们会在 src
下发现多了一个 log.txt
的文件,里面记录了一些信息。
三、配置文件中的常用属性说明
1、日志管理级别
log4j.rootLogger=INFO,console,file
- 1
这句话表示日志管理的级别为 INFO,它要将日志信息输出到 console 和 file 这两个地方,console 和 file 只是两个别名,它们的具体定义在下面的代码中,它们是可以任意起名的。
级别(Level) | 描述 | 级别 |
---|---|---|
ALL | 将显示全部级别的信息 | 1 |
DEBUG | 用于应用程序的调试 | 2 |
INFO | 用于应用程序运行情况信息的消息 | 3 |
WARN | 用于警告具有潜在危害的情况 | 4 |
ERROR | 用于应用程序中产生的错误信息 | 5 |
FATAL | 用于应用程序中产生的非常严重或可能导致应用程序中止的错误信息 | 6 |
OFF | 这是最高日志等级,为了关闭日志记录,将不显示所有的信息 | 7 |
日志管理的级别如上表,级别从高到低(1最高)。例如我们配置的是 OFF 则不打印出任何信息;如果配置为 INFO 这样只显示出比 INFO 级别低的 log 信息。
2、输出端
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.file=org.apache.log4j.FileAppender
- 1
- 2
这两句话表示输出端是控制台和日志文件。当然也可以指定其他地方,如下表:
输出端(Appender) | 说明 | 值 |
---|---|---|
控制台 | 只会在控制台上显示 | org.apache.log4j.ConsoleAppender |
日志文件 | 只会产生一个日志文件 | org.apache.log4j.FileAppender |
日志文件 | 每天产生一个日志文件(新文件以XXX.20XX-XX-XX命名) | org.apache.log4j.DailyRollingFileAppender |
日志文件 | 文件大小到达指定尺寸的时候产生一个新的文件(新文件以XXX.1命名) | org.apache.log4j.RollingFileAppender |
任意地方 | 将日志信息以流格式发送到任意指定的地方(不常用,本篇不作介绍) | org.apache.log4j.WriterAppender |
如果输出端是日志文件(FileAppender)的话,则需要指定存放文件的位置,如下面这句话,它指定了生成日志文件的位置:
log4j.appender.file.File=src/log.txt
- 1
如果输出端是日志文件(RollingFileAppender)的话,则需要对日志文件设置最大存储,不仅需要指定存放文件的位置,还需要设置文件的最大存储大小,如下面这两句话,它指定了生成日志文件的位置和最大存储大小:
log4j.appender.file.File=src/log.txt
# 设置日志文件最大容量为2KB,最好结合RollingFileAppender使用
log4j.appender.file.MaxFileSize=2KB
- 1
- 2
- 3
3、输出端布局类型
log4j.appender.console.layout=org.apache.log4j.PatternLayout
- 1
这句话表示输出端布局类型是灵活布局类型,当然也可以是其他类型,如下表:
输出端布局类型(layout) | 说明 | 值 |
---|---|---|
HTML表格布局类型 | 以HTML表格形式布局 | org.apache.log4j.HTMLLayout |
灵活的布局类型 | 可以灵活地指定布局模式 | org.apache.log4j.PatternLayout |
简单的布局类型 | 只能简单的包含日志级别信息和信息字符串信息 | org.apache.log4j.SimpleLayout |
复杂的布局类型 | 包含日志产生的时间、线程、类别等等信息 | org.apache.log4j.TTCCLayout |
如果输出端的布局类型选择的是以HTML表格形式布局,则需要将输出的文件格式指定为HTML格式,如下面这句话:
log4j.appender.file.File=src/log.html
- 1
4、日志信息格式
log4j.appender.console.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n
- 1
这句话表示灵活布局模式中的日志信息格式,此显示效果的格式是:时间 优先级(格式长度为5个字符) (文件名称:代码行号) - 日志信息。显示效果如下图:
灵活布局模式中还提供了其他的日志信息格式,如下表:
格式化符号 | 说明 |
---|---|
%p | 输出日志信息的优先级,即DEBUG,INFO,WARN,ERROR,FATAL。 |
%d | 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,如:yyyy-MM-dd HH:mm:ss,SSS。 |
%r | 输出自应用程序启动到输出该 log信息耗费的毫秒数。 |
%t | 输出产生该日志事件的线程名。 |
%l | 输出日志事件的发生位置,相当于%c.%M(%F:%L)的组合,包括类全名、方法、文件名以及在代码中的行数。例如:test.TestLog4j.main(TestLog4j.java:10)。 |
%c | 输出日志信息所属类的名称,通常就是所在类的全名。 |
%M | 输出产生日志信息的方法名。 |
另外,还可以在%与格式字符之间加上修饰符来控制其最小长度、最大长度、和文本的对齐方式。如:
c
: 指定输出类的全类名,最小的长度是20,如果全类名长度小于20的话,默认的情况下右对齐。%-20c
:-
号 表示左对齐而长度固定为20,不加-
号 表示右对齐。-
%.30c
: 指定输出类的全类名,最大的长度是30,如果全类名长度大于30的话,就会将左边多出的字符截掉,但小于30的话也不会补空格。
版权声明:本文为 小异常 原创文章,非商用自由转载-保持署名-注明出处,谢谢!
本文网址:https://blog.****.net/sun8112133/article/details/81276020