Log4j终结者(一)——以例子的方式详细介绍Log4j配置文件中代码的含义

通过Log4j可以方便的对项目中的日志进行处理——控制日志信息输出的目的地(控制台、文件、GUI组件或NT事件记录器)、控制每一条日志的输出格式(HTMLLayout布局格式、PatternLayout布局格式、SimpleLayout布局格式或TTCCLayout)、控制所输出日志信息的级别(DEBUG级别、INFO级别、WARN级别、ERROR级别或FATAL级别)等。下面从一个简单的例子入手来详细介绍Log4j的使用方法:

工程结构如下图:

TestLog4j.java文件中的代码:

package com.ghj.test;

import org.apache.log4j.Logger;

public class TestLog4j {

	private static final Logger logger = Logger.getLogger(TestLog4j.class);

	public static void main(String[] args) {
		logger.debug("This log  comes from the DEBUG level!");
		logger.info("This log  comes from the INFO level!");
		logger.warn("This log  comes from the WARN level!");
		logger.error("This log  comes from the ERROR level!");
    }
}

log4j.properties文件中的代码:

log4j.rootLogger=DEBUG,Console,DailyRollingFile

#将日志信息输出到控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Encoding=UTF-8
log4j.appender.Console.layout=org.apache.log4j.SimpleLayout

#将日志信息输出到操作系统D盘根目录下的index.html文件中
log4j.appender.DailyRollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DailyRollingFile.Encoding=UTF-8
log4j.appender.DailyRollingFile.layout=org.apache.log4j.HTMLLayout
log4j.appender.DailyRollingFile.File=D\:\\index.html

0分下载上面源码工程

配置Log4j日志输出级别:

上述log4j.properties文件中的第一行代码等号右边“DEBUG”字符串指明了log日志的输出级别,Log4j的日志输出级别一共有五级,从小到大分别是DEBUG、INFO、WARN、ERROR和FATAL。

注意:

1、日志信息的日志级别只有等于或高于所配置的日志级别时,该日志信息才会输出到指定的日志输出目的地,例如上述配置文件配置的日志级别为DEBUG,那么这时日志级别为DEBUG或INFO或WARN或ERROR或FATAL的日志信息都会输出到指定的日志输出目的地,但是如果将配置文件中的日志级别设置为INFO,那么这时日志级别为INFO或WARN或ERROR或FATAL的日志信息才能输出到指定的日志输出目的地,DEBUG级别的日志信息不会输出到日志的目的地;

2、如果在日志配置文件中不指明日志信息的输出级别,那么系统会将日志信息级别等于或高于DEBUG级别的信息输出到指定的日志目的地——一句话,Log4j的默认日志优先级为DEBUG级别。

Log4j日志输出目的地:

运行上面程序,我们会发现日志信息输出到了两个地方,分别是MyEclipse控制台和

正在总结中......

时间: 2024-11-06 09:31:56

Log4j终结者(一)——以例子的方式详细介绍Log4j配置文件中代码的含义的相关文章

Thinkphp框架拓展包使用方式详细介绍--验证码实例(十一)

拓展压缩包的使用方式详细介绍 1:将拓展包解压:ThinkPHP3.1.2_Extend.zip   --> 将其下的 \Extend  文件全部复制 2:将复制的文件放入项目中 E:\wamp\www\thinkphp\ThinkPHP\Extend(安装的时候这里面是空文件),你自己的项目目录 即可 =============================以下是,拓展包中验证码的使用======================================== 比如用到拓展包的验证码:(

Redis的两种持久化方式详细介绍

一,Redis是一款基于内存的数据库,可以持久化,在企业中常用于缓存,相信大家都比较熟悉Redis了,下面主要分享下关于Redis持久化的两种模式 1.半持久化模式(RDB,filesnapshotting) 此模式是Redis默认的备份方式,通过快照方式,将数据从内存写入磁盘中,如果Redis异常退出,下次启动则从打快照的这个时间节点来恢复此之前的数据,根据数据量大小.结构.服务器性能不同,通常将记录1千万个string类主键.大小为1GB的快照文件载入内存中需要20~30s 触发快照参数在配

shell的详细介绍和编程(中)

Shell 循环语句.条件判断的使用方法及其相关示例 bash脚本条件判断语句使用: test语句的使用说明 if判断语句的使用 case判断语句的应用 条件测试:test 说明介绍:shell中的test命令用于检查某个条件是否成立,它可以进行数值.字符和文件三个方面的测试. test的使用语法 : test EXPRESSION 或者  [ EXPRESSION ]:[[ EXPRESSION ]] 整数测试:隐含着做数值大小比较,所以不要给变量引用加引用: $A -gt $B:是否大于:是

C#+EntityFramework编程方式详细之Code First 数据迁移

在前几篇的C#+EntityFramework编程方式中介绍了C#+EntityFramework编程方式Code First ,Model First以及Dtatabase First 等编程方式,其中Model First以及Dtatabase First中,如果实体类(Model First)或者数据库(Dtatabase First)变化了,那么就需要数据库(Model First)或者实体类(Dtatabase First)来相应的变化,以保持实体类(Model First)和数据库(

(数据科学学习手札32)Python中re模块的详细介绍

一.简介 关于正则表达式,我在前一篇(数据科学学习手札31)中已经做了详细介绍,本篇将对Python中自带模块re的常用功能进行总结: re作为Python中专为正则表达式相关功能做出支持的模块,提供了一系列方法来完成几乎全部类型的文本信息的处理工作,下面一一介绍: 二.re.compile() 在前一篇文章中我们使用过这个方法,它通过编译正则表达式参数,来返回一个目标对象的匹配模式,进而提高了正则表达式的效率,主要参数如下: pattern:输入的欲编译正则表达式,需将正则表达式包裹在''内传

js中的json对象详细介绍

JSON一种简单的数据格式,比xml更轻巧,在JavaScript中处理JSON数据不需要任何特殊的API或工具包,下面为大家详细介绍下js中的json对象, 1.JSON(JavaScript Object Notation)一种简单的数据格式,比xml更轻巧.JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的API或工具包. JSON的规则很简单:对象是一个无序的“‘名称:值'对”集合.一个对象以“{”(左括号)开始,“}”(右括号)结束

科普文:C++内存四区详细介绍

C++内存四区是哪四区?C++内存四区分为代码区.全局区.栈区.堆区,下面我们分别介绍详细介绍. 1.代码区 存放 CPU 执行的机器指令.通常代码区是可共享的(即另外的执行程序可以调用它),使其可共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可.代码区通常是只读的,使其只读的原因是防止程序意外地修改了它的指令.另外,代码区还规划了局部变量的相关信息.推荐了解传智播客C++工程师培训课程. 总结:你所写的所有代码都会放入到代码区中,代码区的特点是共享和只读. 2.全局区 全局区中主

android源码大放送(实战开发必备),免费安卓demo源码,例子大全文件详细列表

免费安卓demo源码,例子大全文件详细列表 本列表源码永久免费下载地址:http://www.jiandaima.com/blog/android-demo 卷 yunpan 的文件夹 PATH 列表 卷序列号为 0000-73EC E:. │ jiandaima.com文件列表生成.bat │ 例子大全说明.txt │ 本例子永久更新地址~.url │ 目录列表2016.03.10更新.txt │ ├─前台界面 │ ├─3D标签云卡片热门 │ │ Android TagCloudView云标签

MongoDB常用命令及例子详细介绍(三)

常用命令,及其高级命令使用介绍 一:增删改查的高级应用详细介绍: 增:***插入的时候c1不在的话将自动创建*** 不管插入那条记录都会自动给带个值id 自增主键唯一 insert 和 save(当id冲突是则修改,否则插入) 一:id主键不冲突的情况没区别 db.c1.insert({name:"leyangjun"}); db.c1.insert({name:"leyangjun"}); insert插入的值id都是唯一的,不会主键id冲突 db.c1.save