能够有选择性地启用或禁用基于他们的记录器的日志请求只是picture的一部分。Log4j允许loggin请求打印到多个目的地。对于Log4j而言,一个输出的destination称为一个appender,目前,控制台,文件,GUI组件,远程套接字服务器,JMS,NT事件记录器,以及远程UNIX系统日志守护进程是已经存在的appender。它也可以异步log。
logger可以连接多个appender
addAppender方法添加一个appender到一个给定的记录器。不但每启用一个给定的logger 记录的请求将被转发到在这个logger所有的appender中而且会在较高的层次appenders结构中追加,换而言之 appenders 在logger层级里追加继承。例如,如果一个控制台Appender是添加到根logger,然后所有启用的日志请求至少会在控制台上打印。如果添加一个文件Appender,如果说C,然后启用loggin,那么C和C的children将log pring到一个文件,并在控制台上也会有相关的pring。
可能重载这个行为,设置additivity flag为false。
Appender Additivity
一个logger C的log 语句的输出,将会对所有在C和C的concestors的appender进行输出。这是“appender additivity”一词的含义。
Appenders
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
public class MyApp {
// Define a static logger variable so that it references the
// Logger instance named "MyApp".
static Logger logger = Logger.getLogger(MyApp.class);
public static void main(String[] args) {
// Set up a simple configuration that logs on the console.
// BasicConfigurator.configure();
// Get configuration path
String path = System.getProperty("configPath", "./conf/");
if(!path.endsWith("/")) {
path += "/";
}
System.out.println("configuration path: " + path);
// Initiliaze log4j
System.out.println("start to initialize log4j...");
DOMConfigurator.configure(path + "log4j.xml");
logger.info("Entering application.");
logger.debug("Entering application.");
logger.fatal("Entering application.");
logger.error("Entering application.");
logger.warn("Entering application.");
Bar bar = new Bar();
bar.doIt();
logger.info("Exiting application.");
logger.debug("Exiting application.");
logger.fatal("Exiting application.");
logger.error("Exiting application.");
logger.warn("Exiting application.");
}
static class Bar {
static Logger logger = Logger.getLogger(Bar.class);
public void doIt() {
logger.debug("Did it again!");
}
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%t - %F:%L] %m%n"/>
</layout>
</appender>
<appender name="file" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="./log/monitor.log" />
<param name="DatePattern" value="yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%t - %F:%L] %m%n"/>
</layout>
</appender>
<logger name="org.apache.activemq">
<level value="WARN"/>
</logger>
<logger name="org.quartz">
<level value="WARN"/>
</logger>
<logger name="org.springframework">
<level value="WARN"/>
</logger>
<root>
<level value="INFO"/>
<appender-ref ref="file"/>
<appender-ref ref="console"/>
</root>
</log4j:configuration>
Layouts
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%t - %F:%L] %m%n"/>
</layout>
%d | 用于输出日志事件的日期。日期转换说明可以跟随大括号括起来的日期格式说明符。例如,%d {HH:MM:SS,SSS}或 %d{HH:mm:ss,SSS} or %d{dd MMM yyyy HH:mm:ss,SSS}。如果没有日期的格式说明符,默认使用ISO8601格式。 |
%p | 设置为输出的日志记录事件的优先级。 |
%t | 用于输出产生的日志事件的线程名称。 |
%F | 用于输出的文件名发出日志请求。警告:极其缓慢的,并应避免使用,除非对执行速度不要求。 |
%L | 用于输出日志请求是从哪里发出的行号。警告:极其缓慢的,并应避免使用,除非对执行速度不要求。 |
%m | 用于输出与记录事件相关的应用程序提供的消息。 |
%n | 输出依赖于平台的行分隔符的字符或字符。这种转换字符提供了几乎同样的性能,使用非便携式行分隔字符串,Windows平台为“。/r/n”,Unix平台为“/n” 。 |
%r | 输出自应用启动到输出该日志信息所耗费的毫秒数。 |
%c | 输出日志信息所属的类的全名。 |
%5p和%%-5p log 区别
2011-12-02 16:16:17,794 INFO [main - MyApp.java:26] Entering application.
2011-12-02 16:18:07,122 INFO [main - MyApp.java:26] Entering application.
2011-12-02 16:16:17,810 FATAL [main - MyApp.java:28] Entering application.
2011-12-02 16:16:17,810 ERROR [main - MyApp.java:29] Entering application.
2011-12-02 16:16:17,810 WARN [main - MyApp.java:30] Entering application.
2011-12-02 16:16:17,810 INFO [main - MyApp.java:34] Exiting application.
2011-12-02 16:16:17,810 FATAL [main - MyApp.java:36] Exiting application.
2011-12-02 16:16:17,810 ERROR [main - MyApp.java:37] Exiting application.
2011-12-02 16:16:17,810 WARN [main - MyApp.java:38] Exiting application.
2011-12-02 16:16:31,044 INFO [main - MyApp.java:26] Entering application.
2011-12-02 16:16:31,044 FATAL [main - MyApp.java:28] Entering application.
2011-12-02 16:16:31,044 ERROR [main - MyApp.java:29] Entering application.
2011-12-02 16:16:31,044 WARN [main - MyApp.java:30] Entering application.
2011-12-02 16:16:31,044 INFO [main - MyApp.java:34] Exiting application.
2011-12-02 16:16:31,044 FATAL [main - MyApp.java:36] Exiting application.
2011-12-02 16:16:31,044 ERROR [main - MyApp.java:37] Exiting application.
2011-12-02 16:16:31,044 WARN [main - MyApp.java:38] Exiting application.
分享到:
相关推荐
这篇日志管理系统简单使用说明将介绍Log4j的三个核心组件:Loggers、Appenders和Layouts,帮助你理解如何在Java应用程序中有效地使用Log4j进行日志管理。 1. **Loggers** - Loggers是日志记录的核心,它们定义了...
Log4j的核心由三个组件构成:Loggers、Appenders和Layouts。 - **Loggers**(日志记录器):负责记录日志。 - **Appenders**(日志目的地):定义日志输出的目的地。 - **Layouts**(布局):决定日志输出的格式。 ...
Log4j的核心组件包括Loggers、Appenders和Layouts。 #### 二、Loggers(日志记录器) **Loggers** 是Log4j中最基本的组件之一,负责生成日志信息。它们可以通过不同的级别来控制日志信息的输出,主要有以下五个...
理解这三个主要组件(Loggers、Appenders 和 Layouts)以及它们之间的交互,对于有效利用 Log4j 来调试和监控应用程序至关重要。通过适当的配置,开发者可以轻松地调整日志输出,从而更好地满足不同环境和需求。
首先,Java日志API由三个主要部分组成:Loggers、Appenders和Layouts。Loggers是日志系统的第一道防线,它们负责捕获应用程序中的事件,并决定哪些事件应该被记录。Loggers通常与特定的命名空间关联,允许开发者根据...
3 说明Log4j 的核心组件包括 Appenders、Layouts 和 Loggers。- Appenders:负责将日志信息输出到指定的目标,如控制台、文件、数据库等。在配置文件中,我们定义了 ConsoleAppender(控制台输出)和 ...
- Loggers:Loggers是日志记录的入口,它们根据级别(如DEBUG、INFO、WARN、ERROR、FATAL)来过滤和记录日志。 - Filters:Filters可以进一步控制哪些日志信息被发送到Appenders,根据特定条件过滤日志。 - ...
-- Appenders --> ... ... <!-- Loggers --> ... <!-- Root Logger --> ... <!-- Layouts --> ... ``` 在这个示例中,`log4j.dtd`确保了配置文件的正确性,并提供了丰富的选项来...
本手册将深入探讨Log4j的三大核心组件:Loggers、Appenders和Layouts,以及如何在实际项目中有效地使用它们。 **1. Loggers(日志器)** Loggers是日志系统的入口,它们负责生成日志消息。在Log4j中,每个Logger都...
- **Loggers**:用于发出日志消息的对象,可以通过这些对象配置日志级别和 Appenders。 - **Lookup**:一种扩展机制,使得日志配置可以包含动态内容。 这种模块化的设计允许用户根据自己的需求灵活地配置日志系统。...
它的架构包括Loggers、Appenders、Layouts、Levels和Filters。Loggers是记录日志的入口,Appenders负责实际的输出操作,Layouts格式化日志内容,Levels定义日志级别,而Filters则允许定制日志过滤规则。 Log4j是另...
- 配置文件是Log4J的核心,用于定义loggers、appenders和layouts。例如: ``` log4j.rootLogger=DEBUG, Console, File log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console....
其核心组件包括Loggers、Appenders和Layouts,它们协同工作来处理每条日志信息的记录和显示。 1. **Loggers(记录器)**:是日志系统的核心组件,负责接收日志事件并决定是否将这些事件转发给相应的Appenders。...
配置文件定义了Loggers、Appenders和Layouts,以及它们之间的关联。例如,你可以设置一个Logger记录所有DEBUG级别的信息到控制台,同时将ERROR级别的信息写入一个名为error.log的文件。 日志的使用通常涉及到以下...
下面我们将深入探讨Log4j的三大主要组件:Loggers、Appenders和Layouts,以及它们之间的相互作用。 **Loggers** Loggers是Log4j的核心组件,负责接收日志消息并决定是否将这些消息输出。它们按照层次结构组织,形成...
Apache Log4cxx 框架组成有三个关键组件,它们是 loggers、appenders 和 layouts。执行日志操作 Logger 是 log4cxx 的核心类。Logger 有层次结构,最顶层为 RootLogger;Logger 是分七个级别,分别是 debug、info、...
- **Repository**:Repository管理所有Loggers和Appenders,它是整个log4net系统的容器。 ### 3. log4net 配置 log4net的配置通常通过XML配置文件进行,例如`log4net.config`。下面是一个简单的配置示例: ```xml...
- `log4cxx.properties`或`log4cxx.xml`:这是log4cxx的配置文件,用于定义loggers、appenders和layouts。 - 配置内容包括:定义logger的级别、指定appender的类型和参数、设置layout的格式等。 - 在程序启动时,...
这些文件定义了loggers、appenders和layouts,以及它们之间的关系。例如,你可以指定哪个logger应该将日志信息发送到哪个appender,以及使用哪种layout格式。 4. **使用Log4j API**: 开发者通过调用Logger类的...