紧紧接着log4j 介绍(1)--Logger篇
If a given logger is not assigned a level, then it inherits one from its closest ancestor with an assigned level. More formally:
Level Inheritance
The inherited level for a given logger C, is equal to the first non-null level in the logger hierarchy, starting at C and proceeding upwards in the hierarchy towards the root logger.
来句中文解释: Level是指: DEBUG < INFO < WARN < ERROR < FATAL.
如果logger C的level没有被制定,那么它会去寻找它最接近的上面的parent或者ancestor的Level,一直到root的Level为止。 例如:
// get a logger instance named "com.foo"
Logger logger = Logger.getLogger("com.foo");
// Now set its level. Normally you do not need to set the
// level of a logger programmatically. This is usually done
// in configuration files.
logger.setLevel(Level.INFO);
Logger barlogger = Logger.getLogger("com.foo.Bar");
//barlogger no setting level, so will inherite its level
//from logger named "com.foo". Hence barlogger has the INFO leval
A logging request is said to be enabled if its level is higher than or equal to the level of its logger. Otherwise, the request is said to be disabled. A logger without an assigned level will inherit one from the hierarchy. This rule is summarized below.
This rule is at the heart of log4j. It assumes that levels are ordered. For the standard levels, we have DEBUG < INFO < WARN < ERROR < FATAL.
Here is an example of this rule.
// get a logger instance named "com.foo"
Logger logger = Logger.getLogger("com.foo");
// Now set its level. Normally you do not need to set the
// level of a logger programmatically. This is usually done
// in configuration files.
logger.setLevel(Level.INFO);
Logger barlogger = Logger.getLogger("com.foo.Bar");
// This request is enabled, because WARN >= INFO.
logger.warn("Low fuel level.");
// This request is disabled, because DEBUG < INFO.
logger.debug("Starting search for nearest gas station.");
// The logger instance barlogger, named "com.foo.Bar",
// will inherit its level from the logger named
// "com.foo" Thus, the following request is enabled
// because INFO >= INFO.
barlogger.info("Located nearest gas station.");
// This request is disabled, because DEBUG < INFO.
barlogger.debug("Exiting gas station search");
Calling the getLogger method with the same name will always return a reference to the exact same logger object.
比如:
Logger x = Logger.getLogger("wombat");
Logger y = Logger.getLogger("wombat");
x 和 y都是指向同一个logger 对象的
这样的好处可以在任意的地方定义一些引用,来指向同一个logger对象,而不需要传递引用。灵活方便一点
Configuration of the log4j environment is typically done at application initialization. The preferred way is by reading a configuration file. This approach will be discussed shortly.
读取配置文件的顺序是: 先会去class目录下寻找log4j.xml,然后才是log4j.properties.
Log4j makes it easy to name loggers by software component. This can be accomplished by statically instantiating a logger in each class, with the logger name equal to the fully qualified name of the class. This is a useful and straightforward method of defining loggers. As the log output bears the name of the generating logger, this naming strategy makes it easy to identify the origin of a log message. However, this is only one possible, albeit common, strategy for naming loggers. Log4j does not restrict the possible set of loggers. The developer is free to name the loggers as desired.
Nevertheless, naming loggers after the class where they are located seems to be the best strategy known so far.
一般开发人员会在每个不同的classes中定义对应的logger,这样的好处很多(我们都是这么做的)。
分享到:
相关推荐
在本篇中,我们将深入探讨Log4j2的核心特性、其API与Core组件的功能,以及如何在实际项目中应用这些文件。 Log4j2是一个继Log4j之后的日志系统,旨在提供更高效的性能、丰富的日志配置选项和动态日志管理。2.11.1...
标题中的“log4jdbc-log4j2配置简记”指的是在Java开发中使用log4jdbc-log4j2库来监控和记录SQL查询的过程。log4jdbc是一个开源项目,它允许开发者通过日志系统来追踪数据库操作,而log4j2是log4j的升级版,提供了更...
本篇将详细介绍Log4j 1.2.11版本以及其核心组件——`log4j.properties`配置文件。 **一、Log4j简介** Log4j是基于组件的日志框架,它提供了一种灵活的方式来记录应用程序中的事件。这些事件可以是错误、警告、调试...
本篇将详细探讨Spring定时任务及其所需的jar包`slf4j-api-1.5.6.jar`和`slf4j-log4j12-1.5.6.jar`。 **Spring定时任务** Spring定时任务主要由`org.springframework.scheduling`包提供,基于Java的`@Scheduled`...
在Java开发中,日志记录是一项至关重要的任务,它帮助开发者追踪程序运行状态,调试问题,以及进行性能分析。...通过阅读《log4j(二):动态配置日志输出路径》这篇博文,你可以获得更详细的操作步骤和实践指导。
本篇将基于“log4j案例代码”进行深入讲解。 **1. Log4j简介** Log4j是一个用于记录应用日志的灵活框架,它提供了多种级别的日志记录,如DEBUG、INFO、WARN、ERROR和FATAL,以及自定义级别。Log4j的灵活性体现在它...
在《Log4j将System.out搞到log4j中输出四》这篇博文中,作者可能详细讨论了这些步骤,并可能分享了一些实战经验。通过学习这篇博文,读者可以更深入地了解如何在实际项目中实现这一转换,提升日志管理的效率。 总结...
`log4j2`的配置文件通常为`log4j2.xml`或`log4j2.json`,这里以XML为例,创建一个基础配置: ```xml <?xml version="1.0" encoding="UTF-8"?> [%t] %-5level %logger{36} - %msg%n"/> ``` 这...
这篇介绍旨在帮助初学者理解 log4j 的核心概念和使用方法。 **1. 简介** 日志记录在软件开发中扮演着重要角色,因为它有助于调试、监控和问题排查。log4j 提供了一个分级的日志系统,允许开发者根据事件的重要性...
本篇将详细解析Hibernate3.3.1与SLF4J-Log4j12-1.5.2的集成及其在实际应用中的作用。 **Hibernate3.3.1详解** Hibernate3.3.1是Hibernate系列的一个稳定版本,它提供了丰富的功能,如对象关系映射、事务管理、查询...
本篇将围绕“log4j配置文件以及配套jar包”进行详细介绍。 首先,我们要了解Log4j的基本结构。Log4j主要由三个部分组成:Logger(日志器)、Appender(输出端)和Layout(布局)。Logger负责记录日志事件,Appender...
本篇将基于提供的"Log4j中文版API",深入讲解其核心概念、配置及使用方法。 一、Log4j的基本组件 1. **Logger**: 日志器是Log4j的核心组件,负责生成日志事件。每个类通常都有一个对应的Logger实例,用于记录与该...
本篇文章将深入探讨Log4j的多个简单实例,帮助你理解和掌握其基本用法。 首先,Log4j由三个主要组件构成:配置器(Configuration)、日志器(Logger)和布局(Layout)。配置器定义了日志信息的输出格式和位置;...
本篇将深入探讨Log4j2的使用,包括配置、API使用、日志级别以及各种输出格式的设置。 1. **配置Log4j2** - 配置文件:Log4j2的配置通常以XML、JSON或YAML格式进行,其中XML是最常见的。配置文件中定义了日志的输出...
本篇文章将深入探讨Log4j的使用,并通过实例进行讲解。 ### 1. Log4j的基本概念 - **Logger**: 日志器是Log4j的核心组件,负责生成日志消息。你可以根据需要创建多个Logger,每个Logger都有自己的名字和日志级别。...
这篇博客"Log4j 把不同包的日志打印到不同位置"可能详细解释了如何利用Log4j配置来实现特定包的日志定向输出,以便于管理和分析来自不同模块的日志信息。 在Java应用中,我们常常会遇到多个模块或者不同包的类同时...
本篇文章旨在深入探讨 Log4j 的架构设计、基本用法以及性能特点。 #### 二、Log4j 的核心组件 Log4j 的设计围绕三大核心组件展开:**Logger**、**Appender** 和 **Layout**。这三个组件相互协作,确保日志记录既...
标题“log4j 介绍(6)-- tutorial 参考”指出,这是一篇关于log4j日志框架的教程性文章,可能是系列教程的第六部分,重点是提供学习和参考的指导。描述中提到的"log4j-tutorial-en.pdf"是一个英文版的PDF文档,可能...
2. **配置Log4j** - 配置文件通常为`log4j.properties`或`log4j.xml`,用于定义日志的级别、输出目的地、格式等。 - 日志级别包括DEBUG、INFO、WARN、ERROR、FATAL,开发者可以根据需要设置不同级别的日志输出。 ...
本篇文章将深入探讨Log4j的参数配置方法,以及ConversionPattern参数的格式含义。 首先,Log4j的核心在于其配置文件,一般命名为`log4j.properties`或`log4j.xml`。配置文件定义了日志记录的级别、输出目的地和格式...