log4j详解(二) XML 配置方式

上一篇文章说到了 log4j 的 properties 的配置方式,虽然感觉区别没有很大,但是 log4j.properties的配置方式里面不能使用 Filter 过滤器来限制日志级别,另一个原因在于 log4j.xml 在插入数据库的时候sql 语句可以放在 layout 属性的 ConversionPattern
参数中,而 log4j.properties 配置起来就显得更加麻烦

一、步骤

   1.引入 jar 包

   2.src 下创建 log4j.xml 文件

   3.配置头部(重要)

   

   4.配置 XML

二、代码部分

    XML 文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
	<!-- 以下是 appender 的定义,定义日志输出的目的地、输出方式和过滤级别 -->
	<!-- * 1. 一个 appender 子元素定义一个日志输出目的地 * 2. 一个logger子元素定义一个日志写出器 -->
	<appender name="myFileAppend" class="org.apache.log4j.RollingFileAppender">
		<param name="File" value="E:logs//output.log" /><!-- 设置日志输出文件名 -->
		<!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
		<param name="Append" value="true" />
		<param name="MaxBackupIndex" value="10" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%p (%c:%L)- %m%n" />
		</layout>
		<!-- LevelRangeFilter:是一个非常简单的过滤器基于水平匹配,可拒绝消息优先级在一定范围内。 过滤器承认三个选项 LevelMin
			, LevelMax , AcceptOnMatch。 如果 LoggingEvent 的水平不是 Min 和 Max (包容),然后过滤。否认返回。
			如果日志事件级别是在指定范围内,然后如果 AcceptOnMatch 是真的,过滤器。接受返回,如果AcceptOnMatch是假,过滤器。中立的返回。
			如果 LevelMin 没有定义,那么就没有最小可接受的水平(即水平永远不会拒绝过于“低”/不重要)。 如果LevelMax没有定义,那么就没有最大可接受的水平(即水平也不会拒绝这份“高”/重要)。
			参考 setThreshold 方法可用于所有输出源扩展 AppenderSkeleton 为一个更加方便的方式来过滤事件级别。 -->
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="LevelMin" value="DEBUG"></param>
			<param name="LevelMax" value="DEBUG"></param>
			<param name="AcceptOnMatch" value="true"></param>
		</filter>
	</appender>

	<!-- 控制台输出 -->
	<appender name="consoleAppend" class="org.apache.log4j.ConsoleAppender">
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern"
				value="%-d{yyyy-MM-dd HH:mm:ss} [%5p][%t][%c{1}]-[%M] %m%n" />
		</layout>
	</appender>

	<appender name="activexAppender" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="File" value="E:/logs/activex.log" />
		<param name="Appender" value="false"></param>
		<param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%d{MMdd HH:mm:ss SSS\} %-5p] [%t] %c{3\} - %m%n" />
		</layout>
	</appender>

	<!-- 日志写出器:每一个 logger 可以有多个输出目的地和输出方式 additivity 指示是否遵循缺省的继承机制 -->
	<logger name="com.inspur.log4j.testLog4j" additivity="false">
		<level value="DEBUG"></level>
		<appender-ref ref="consoleAppend"></appender-ref>
	</logger>

	<!-- 根logger的设置 -->
	<root>
		<priority value="debug" />
		<appender-ref ref="myFileAppend" />
		<appender-ref ref="activexAppender" />
	</root>
</log4j:configuration>

测试类

package com.inspur.log4j;

import org.apache.log4j.Logger;

public class testLog4j {

	public static final Logger log = Logger.getLogger(testLog4j.class);

	public static void main(String[] args) {
		System.out.println("Start.");
		for (int i = 0; i < 4; i++) {
			log.info("Enter the main()....");
			log.debug("Enter the main()....");
			log.warn("Enter the main()....");
			log.error("Exception!");
			System.out.println("This is log4j test.");
			log.info("End.");
		}
	}

}

记得要在指定目录下建立一个 logs 文件夹~

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-28 17:19:43

log4j详解(二) XML 配置方式的相关文章

log4j详解(一)properties配置方式+Socket编程

     这段时间看了 Socket 编程 和 log4j 进行日志处理,打算搞一搞加深印象.代码有详细的注释.欢迎各位拍砖 =.=|||    一.步骤,简单操作 1.加入 jar 包. 2.在 src 同级创建并设置配置文件 log4j.properties 3.响应的修改其中属性,修改之前就必须知道这些用于何处. 4.在要输出日志的类中加入相关语句. 二.Log4j基本使用方法 Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式.日志信息的优先级从高

log4j详解与实战

log4j是一个非常强大的log记录软件,下面我们就来看看在项目中如何使log4j. 首先当然是得到log4j的jar档,推荐使用1.2.X版,下载地址: http://logging.apache.org/log4j/1.2/download.html 我们先看一个最简单的示例: [示例1] 项目结构: [注:由于这里的多个项目公用一个jar档,我们可以创建一个专门放置jar档的Java工程,然后将jar档放到lib目录下.在要使用的工程中按图所示进行引用 ] Java代码: Java代码  

log4j详解(二)

在实际编程时,要使Log4j真正在系统中运行事先还要对配置文件进行定义.定义步骤就是对Logger.Appender及Layout的分别使用.Log4j支持两种配置文件格式,一种是XML格式的文件,一种是java properties(key=value)[Java特性文件(键=值)].(这里只说明properties文件) 1.配置根Logger         其语法为:         log4j.rootLogger = [ level ] , appenderName1, append

【转载】log4j详解使用

log4j详解 日志论    在应用程序中输出日志有有三个目的:(1)监视代码中变量的变化情况,把数据周期性地记录到文件中供其他应用进行统计分析工作. (2)跟踪代码运行进轨迹,作为日后审计的依据. (3)担当集成开发环境中的调试器,向文件或控制台打印代码的调试信息.  Apache能用日志包(Commons Logging Package)是Apache的一个开放源代码项目,它提供了一组通用的日志接口,用户可以自由地选择实现日志接口的第三方软件.通用日志包目前支持以下日志实现: Log4J日志

Android Widget 开发详解(二)

转载请标明出处:http://blog.csdn.net/sk719887916/article/details/47027263 不少开发项目中都会有widget功能,别小瞧了它,他也是android的七大组件之一,对widget陌生的朋友可以阅读下我的上篇文章< Android Widget工作原理详解(一)> 今天我们就实现一个可以滑动的widet,熟悉下一个普通widget的开发. 一 创建AppWidgetProvider 此类是widget的控制核心,主要控制添加,删除,更新等.他

php学习之道:WSDL详解(二)

3.定义服务使用的逻辑消息 当服务的操作被调用时,服务被定义为消息交换.在wsdl文档中,这些消息被定义message元素.这些消息由称之为part元素的部分组成. 一个服务的操作,通过指定逻辑消息的方式来定义.当操作被调用时,逻辑消息被交换.(也就是说,逻辑消息代表了服务的操作)这些逻辑消息,将在网络上传输的数据定义为xml文档.他包含了所有的参数,这些参数是方法调用的一部分.(也就是说,逻辑消息里的参数,是操作对应方法的参数集合) 消息和参数列表:每一个被服务暴露的操作能且仅能有一个输入消息

Mysql 配置参数详解以及优化配置

mysql有以下几种日志: 错误日志:   log-err 查询日志:   log 慢查询日志:  log-slow-queries 更新日志:   log-update 二进制日志: log-bin 要把日志生成在 /var/log 目录下(是系统日志存放的地方,只有 root 账号有写权限),需要 MySQL进程对这个目录有读写权限,一般是不这么做的,也考虑到安全问题,包括 MySQL 本身的数据安全,因为对 MySQL 的所有操作,都会记录到常规查询日志.MySQL的日志就不要用 /var

详解SSH注解配置,bean注解、事物注解等

使用过SSH注解的屌丝们都知道,要想使用注解需要在applicationContext.xml配置文件里面开启注解配置,开启方式如下:1.头部声明需加入xmlns:context="http://www.springframework.org/schema/context"http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3

Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)

[Android布局学习系列]   1.Android 布局学习之——Layout(布局)详解一   2.Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)   3.Android 布局学习之——LinearLayout的layout_weight属性   4.Android 布局学习之——LinearLayout属性baselineAligned的作用及baseline    Layout Parameters(布局参数): 在XML文件中,我们经常看到类似与lay