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

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.


分享到:
评论

相关推荐

    java_programming_manual_log_files.rar_java programming_日志

    java日志文件编程使用手册: Log4j 有三个主要的组件: Loggers , Appenders 和 Layouts ,即日志类别,日志要输出的地方和日志以何种形式输出。

    深入学习log4j

    Log4j有三个主要的组件,分别是loggers,appenders和layouts.这三种类型的部件工作在一起就能允许开发者根据记录信息的类型和级别来记录日志信息,并且在系统运行时能够按照不同的格式将这三类信息存储在指定的地方。...

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

    Log4j有三个主要的组件:Loggers,Appenders和Layouts,这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松的记录信息的类型和级别,并可以在运行时控制日志输出的样式和...

    log4j使用教程

    A:)Log4j的三个重要组件—— Loggers, Appenders, Layouts 这三个组件协同的工作,使得开发者能够依据信息类别和级别去纪录信息,并能够 运行期间,控制信息记录的方式已经日志存放地点。 B:)记录器层次(Logger...

    erlang日志应用log4erl(非sasl)

    - Name of both loggers & appenders should be unique and not registered since log4erl will try and register their names. If the name is already registered, nothing will happen. This will be fixed soon...

    Log4j教程.docx

    log4j是一个用Java编写的可靠,快速和灵活的日志框架(API),它在Apache软件许可下发布。...• appenders : 负责发布日志信息,以不同的首选目的地。 • layouts: 负责格式化不同风格的日志信息。

    Log4.properties配置详解

    Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在...

    详细解析_Log4j_配置

    Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在...

    Log4j.properties配置详解

    Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在...

    Log4j使用手册 日志记录包

    程序开发环境中的日志记录是由嵌入在程序中以输出一些对开发人员有用信息的语句所组成。例如,跟踪语句(trace),结构转储和常见的System.out.println或printf调试语句。log4j提供分级方法在程序中嵌入日志记录语句...

    Nodejs Express 通过log4js写日志到Logstash(ELK)

    Log4j 是一个使用 Java 语言编写的,可靠、快速、灵活的日志框架(API),使用 Apache ... loggers:负责采集日志信息。 appenders:负责将日志信息发布到不同地方。 layouts:负责以各种风格格式化日志信息。 确认

    Apache Log4j 2 v2 用户指南

    7. Web Applications and JSPs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 8. Plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....

Global site tag (gtag.js) - Google Analytics