博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Log4j的日志级别分析(转)
阅读量:5279 次
发布时间:2019-06-14

本文共 2258 字,大约阅读时间需要 7 分钟。

说明:Log4j的日志是有级别的,从低到高顺序为:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF,当定义了日志级别为WARN后,那么其比它高的级别(ERROR < FATAL)会打印出来。

基本使用方法:

Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低有ERROR、WARN、INFO、DEBUG,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示内容。

日志信息的优先级

org.apache.log4j.Level类提供以下级别,但也可以通过Level类的子类自定义级别。

Level 描述
ALL 各级包括自定义级别
DEBUG 指定细粒度信息事件是最有用的应用程序调试
ERROR 错误事件可能仍然允许应用程序继续运行
FATAL 指定非常严重的错误事件,这可能导致应用程序中止
INFO 指定能够突出在粗粒度级别的应用程序运行情况的信息的消息
OFF 这是最高等级,为了关闭日志记录
TRACE 指定细粒度比DEBUG更低的信息事件
WARN 指定具有潜在危害的情况

日志级别是如何工作的?

级别p的级别使用q,在记录日志请求时,如果p>=q启用。这条规则是log4j的核心。它假设级别是有序的。对于标准级别它们关系如下:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF。

下面的例子明确指出如何可以过滤所有的DEBUG和INFO消息。这个程序使用记录并执行setLevel(Level.X)方法来设置所需的日志记录级别。

这个例子将打印,除了调试和信息的所有消息:

import org.apache.log4j.*;public class LogClass {   private static final org.apache.log4j.Logger log = Logger.getLogger(LogClass.class);   public static void main(String[] args) {      log.setLevel(Level.WARN);      log.trace("Trace Message!");      log.debug("Debug Message!");      log.info("Info Message!");      log.warn("Warn Message!");      log.error("Error Message!");      log.fatal("Fatal Message!");   }}

当编译并运行LogClass程序会产生以下结果:

Warn Message!Error Message!Fatal Message!

使用配置文件设置级别:

Log4j提供这些可以让程序员自由更改源代码,改变调试级别的配置级别是基于文件设置。

以下是上面的例子使用 log.setLevel(Level.WARN)方法的配置文件与上面的例子例子功能一样。

# Define the root logger with appender filelog = /usr/home/log4jlog4j.rootLogger = WARN, FILE# Define the file appenderlog4j.appender.FILE=org.apache.log4j.FileAppenderlog4j.appender.FILE.File=${log}/log.out# Define the layout for file appenderlog4j.appender.FILE.layout=org.apache.log4j.PatternLayoutlog4j.appender.FILE.layout.conversionPattern=%m%n

现在,使用下面的程序:

import org.apache.log4j.*;public class LogClass {   private static final org.apache.log4j.Logger log = Logger.getLogger(LogClass.class);   public static void main(String[] args) {      log.trace("Trace Message!");      log.debug("Debug Message!");      log.info("Info Message!");      log.warn("Warn Message!");      log.error("Error Message!");      log.fatal("Fatal Message!");   }}

现在,编译和运行上面的程序,得到以下结果在/usr/home/log4j/log.out文件:

Warn Message!Error Message!Fatal Message!

 

参考:

(以上内容转自此篇文章)

转载于:https://www.cnblogs.com/EasonJim/p/7797900.html

你可能感兴趣的文章
.NET完全手动搭建三层B/S架构
查看>>
5 X 5 方阵引出的寻路算法 之 路径遍历(完结)
查看>>
时分秒计时器 js
查看>>
解决微信内置浏览器不能下载问题
查看>>
Python的内置函数
查看>>
随笔:写代码和做开发的不同
查看>>
实验二Java面向对象程序设计实验报告(2)
查看>>
【转】Selenium - 封装WebDrivers (C#)
查看>>
ASP.NET Core 企业级开发架构简介及框架汇总
查看>>
基于HANA Cloud的SAP Mobility Platform正式发布
查看>>
java高薪之路__005_IO流
查看>>
文件系统扫描工具-fsck
查看>>
SPOJ DCEPC11I
查看>>
Mongodb关闭开源许可感想
查看>>
GCD 的初步认识
查看>>
好设计,迁移不费劲
查看>>
OpenGL缓冲区
查看>>
orz gzy
查看>>
Window虚拟内存管理(转)
查看>>
Google搜索技术
查看>>