`
headof
  • 浏览: 23447 次
  • 来自: ...
社区版块
存档分类
最新评论

loggers-Appenders and Layouts

阅读更多
能够有选择性地启用或禁用基于他们的记录器的日志请求只是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日志管理系统简单使用说明1

    这篇日志管理系统简单使用说明将介绍Log4j的三个核心组件:Loggers、Appenders和Layouts,帮助你理解如何在Java应用程序中有效地使用Log4j进行日志管理。 1. **Loggers** - Loggers是日志记录的核心,它们定义了...

    Log4j日志管理系统简单使用说明

    Log4j的核心由三个组件构成:Loggers、Appenders和Layouts。 - **Loggers**(日志记录器):负责记录日志。 - **Appenders**(日志目的地):定义日志输出的目的地。 - **Layouts**(布局):决定日志输出的格式。 ...

    Log4j日志管理

    Log4j的核心组件包括Loggers、Appenders和Layouts。 #### 二、Loggers(日志记录器) **Loggers** 是Log4j中最基本的组件之一,负责生成日志信息。它们可以通过不同的级别来控制日志信息的输出,主要有以下五个...

    log4j入门使用文档

    理解这三个主要组件(Loggers、Appenders 和 Layouts)以及它们之间的交互,对于有效利用 Log4j 来调试和监控应用程序至关重要。通过适当的配置,开发者可以轻松地调整日志输出,从而更好地满足不同环境和需求。

    Java日志终极指南

    首先,Java日志API由三个主要部分组成:Loggers、Appenders和Layouts。Loggers是日志系统的第一道防线,它们负责捕获应用程序中的事件,并决定哪些事件应该被记录。Loggers通常与特定的命名空间关联,允许开发者根据...

    log4j基本知识

    3 说明Log4j 的核心组件包括 Appenders、Layouts 和 Loggers。- Appenders:负责将日志信息输出到指定的目标,如控制台、文件、数据库等。在配置文件中,我们定义了 ConsoleAppender(控制台输出)和 ...

    log4net Dll文件 (2.0到4.5版本都有)

    - Loggers:Loggers是日志记录的入口,它们根据级别(如DEBUG、INFO、WARN、ERROR、FATAL)来过滤和记录日志。 - Filters:Filters可以进一步控制哪些日志信息被发送到Appenders,根据特定条件过滤日志。 - ...

    log4j中的dtd文件

    -- Appenders --&gt; ... ... &lt;!-- Loggers --&gt; ... &lt;!-- Root Logger --&gt; ... &lt;!-- Layouts --&gt; ... ``` 在这个示例中,`log4j.dtd`确保了配置文件的正确性,并提供了丰富的选项来...

    java_programming_manual_log_files.rar_java programming_日志

    本手册将深入探讨Log4j的三大核心组件:Loggers、Appenders和Layouts,以及如何在实际项目中有效地使用它们。 **1. Loggers(日志器)** Loggers是日志系统的入口,它们负责生成日志消息。在Log4j中,每个Logger都...

    log4j-users-guide 用户手册

    - **Loggers**:用于发出日志消息的对象,可以通过这些对象配置日志级别和 Appenders。 - **Lookup**:一种扩展机制,使得日志配置可以包含动态内容。 这种模块化的设计允许用户根据自己的需求灵活地配置日志系统。...

    日志技术笔记总结.pdf

    它的架构包括Loggers、Appenders、Layouts、Levels和Filters。Loggers是记录日志的入口,Appenders负责实际的输出操作,Layouts格式化日志内容,Levels定义日志级别,而Filters则允许定制日志过滤规则。 Log4j是另...

    Log4J日志代码

    - 配置文件是Log4J的核心,用于定义loggers、appenders和layouts。例如: ``` log4j.rootLogger=DEBUG, Console, File log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console....

    log4j使用详解

    其核心组件包括Loggers、Appenders和Layouts,它们协同工作来处理每条日志信息的记录和显示。 1. **Loggers(记录器)**:是日志系统的核心组件,负责接收日志事件并决定是否将这些事件转发给相应的Appenders。...

    java-日志-log4j.7z

    配置文件定义了Loggers、Appenders和Layouts,以及它们之间的关联。例如,你可以设置一个Logger记录所有DEBUG级别的信息到控制台,同时将ERROR级别的信息写入一个名为error.log的文件。 日志的使用通常涉及到以下...

    log4j的应用配置[文].pdf

    下面我们将深入探讨Log4j的三大主要组件:Loggers、Appenders和Layouts,以及它们之间的相互作用。 **Loggers** Loggers是Log4j的核心组件,负责接收日志消息并决定是否将这些消息输出。它们按照层次结构组织,形成...

    Apache log4cxx在C++多进程多线程下的使用.docx

    Apache Log4cxx 框架组成有三个关键组件,它们是 loggers、appenders 和 layouts。执行日志操作 Logger 是 log4cxx 的核心类。Logger 有层次结构,最顶层为 RootLogger;Logger 是分七个级别,分别是 debug、info、...

    log4net 日志操作 源码

    - **Repository**:Repository管理所有Loggers和Appenders,它是整个log4net系统的容器。 ### 3. log4net 配置 log4net的配置通常通过XML配置文件进行,例如`log4net.config`。下面是一个简单的配置示例: ```xml...

    已编译好的、vs2010下可用的log4cxx日志工具

    - `log4cxx.properties`或`log4cxx.xml`:这是log4cxx的配置文件,用于定义loggers、appenders和layouts。 - 配置内容包括:定义logger的级别、指定appender的类型和参数、设置layout的格式等。 - 在程序启动时,...

    apache-log4j-1.2.15.zip

    这些文件定义了loggers、appenders和layouts,以及它们之间的关系。例如,你可以指定哪个logger应该将日志信息发送到哪个appender,以及使用哪种layout格式。 4. **使用Log4j API**: 开发者通过调用Logger类的...

Global site tag (gtag.js) - Google Analytics