Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志的输出到控制台,或者文件等等。

同时,在各大框架中也主要是使用log4j来进行日志的输出。

下面是log4j1.x版本的详细配置:

在1.x版本的log4j中,只需要一个依赖包:log4j-1.x.x.jar

要使用log4j还需要一个配置文件(log4j.properties),来指定log输出的具体方式。

先来看一个简单的实现。

在这个例子中,没有使用配置文件,仅仅用的是默认的配置。

package com.fuwh.demo;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Level;
import org.apache.log4j.Logger; public class Log4jDemo01 { public static void main(String[] args) {
//初始化logger
Logger log=Logger.getLogger(Log4jDemo01.class);
//加载默认的配置信息
BasicConfigurator.configure();
log.log(Level.ERROR, "这是err log");
log.debug("这是debug log");
log.info("这是info log"); }
}

输出结果:

1 [main] ERROR com.fuwh.demo.Log4jDemo01  - 这是err log
2 [main] DEBUG com.fuwh.demo.Log4jDemo01 - 这是debug log
3 [main] INFO com.fuwh.demo.Log4jDemo01 - 这是info log

如果改用配置文件的话就是这样的

#log4j.properties

#set root logger level to DEBUG and its only appender to A1
log4j.rootLogger=DEBUG,A1 #A1 is set to be a ConsoleAppender
log4j.appender.A1=org.apache.log4j.ConsoleAppender #A1 uses PatternLayout
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
package com.fuwh.demo;

import org.apache.log4j.Level;
import org.apache.log4j.Logger; public class Log4jDemo01 { public static void main(String[] args) {
//初始化logger
Logger log=Logger.getLogger(Log4jDemo01.class);
log.info("log等级:"+log.getLevel()); log.log(Level.ERROR, "这是err log");
log.debug("这是debug log");
log.info("这是info log");
}
}

输出信息:

0    [main] INFO  com.fuwh.demo.Log4jDemo01  - log等级:null
2 [main] ERROR com.fuwh.demo.Log4jDemo01 - 这是err log
2 [main] DEBUG com.fuwh.demo.Log4jDemo01 - 这是debug log
2 [main] INFO com.fuwh.demo.Log4jDemo01 - 这是info log

log4j总共有三个组件:loggers,appenders,layouts。

log4j的配置文件可以是XML文件或者是java的属性文件。

在log4j中的logger是分等级层次的,最顶层的是rootLogger,其他的logger都会继承他。

意思就是说:名字为:com.foo的logger是继承自 名为com的logger,名为com的logger又是继承自rootLogger。

而每一个logger都可以指定输出信息的等级。

等级是在org.apache.log4j.Level类中定义的,共有下面这些:

TRACE:表示细粒度的一些信息

DEBUG:表示调试信息

INFO:表示一般的信息

WARN:表示警告信息

ERROR:表示一般的错误信息

FATAL:表示致命的错误

而且这些等级是有顺序的,顺序为:

DEBUG < INFO < WARN < ERROR < FATAL

当你指定输出等级之后,只有大于或等于这个等级的消息才会被输出。

意思就是说,当你指定输出等级为INFO的时候,INFO和WARN,ERROR,FATAL等等消息会被输出,

但是DEBUG信息不会被输出。

log4j.properties文件的详细配置

配置根Logger

log4j.rootLogger=等级, appenderName , appenderName 。。。

指定rootLogger的输出等级,并且输出到appenderName这个目的地,这个名字可以自己随便取

主要用来在下面配置stdout或者R的其他详细信息的时候用的一个名字。

配置输出目的地Appender

log4j.appender.appenderName=appender class name

用来指定输出的类型,还可以指定以下的输出方式:

org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),可通过log4j.appender.R.MaxFileSize=100KB设置文件大小,还可通过org.apache.log4j.MaxBackupIndex=1设置为保存一个备份文件。
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
例如:log4j.appender.stdout=org.apache.log4j.ConsoleAppender
定义一个名为stdout的输出目的地,ConsoleAppender为控制台。

配置日志信息的输出格式

Layout用来格式化Appender的输出

log4j.appender.appenderName.layout=layout class name

log4j.appender.appenderName.layout.option1 = value1

在log4j中提供的layout有以下几种:

org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

格式化日志

Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:
%m 输出代码中指定的消息;
%M 输出打印该条日志的方法名;
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL;
%r 输出自应用启动到输出该log信息耗费的毫秒数;
%c 输出所属的类目,通常就是所在类的全名;
%t 输出产生该日志事件的线程名;
%n 输出一个回车换行符,Windows平台为"rn”,Unix平台为"n”;
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss,SSS},输出类似:2002-10-18 22:10:28,921;
%l 输出日志事件的发生位置,及在代码中的行数。

下面是一个典型的log4j配置

#log4j.properties

#set root logger level to DEBUG and its only appender to A1
log4j.rootLogger=INFO,Console,logFile ##Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n ##logFile
log4j.appender.logFile=org.apache.log4j.RollingFileAppender
log4j.appender.logFile.File=D:\\coding\\log4j.txt
log4j.appender.logFile.MaxFileSize=1KB
log4j.appender.logFile.MaxBackupIndex=3
log4j.appender.logFile.layout=org.apache.log4j.PatternLayout
log4j.appender.logFile.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n #define log level for special class to overrid rootlogger
#log4j.logger.java.sql.ResultSet=INFO
#log4j.logger.org.apache=INFO
#log4j.logger.java.sql.Connection=DEBUG
#log4j.logger.java.sql.Statement=DEBUG
#log4j.logger.java.sql.PreparedStatement=DEBUG

小技巧

有时候,可能你希望某个包或者某个类中的log信息不被输出,或者输出更加详细的,或者更加简单的信息,则可以单独配置来覆盖rootLooger的配置,例如:

#log4j.logger.org.apache=INFO  

Log4j1.2配置详解的更多相关文章

  1. Hibernate4搭建Log4J日志管理(附Log4j.properties配置详解)

    1.首先加入slf4j的jar包,即slf4j-api-1.6.1.jar 在hibernate官网下载hibernate-release-4.2.2.Final.zip并解压,在hibernate- ...

  2. JAVAEE——spring01:介绍、搭建、概念、配置详解、属性注入和应用到项目

    一.spring介绍 1.三层架构中spring位置 2.spring一站式框架 正是因为spring框架性质是属于容器性质的. 容器中装什么对象就有什么功能.所以可以一站式. 不仅不排斥其他框架,还 ...

  3. Tomcat记录-tomcat常用配置详解和优化方法(转载)

    常用配置详解 1 目录结构 /bin:脚本文件目录. /common/lib:存放所有web项目都可以访问的公共jar包(使用Common类加载器加载). /conf:存放配置文件,最重要的是serv ...

  4. log4j.properties配置详解与实例

    log4j.properties配置详解与实例 第一步:加入log4j-1.x.x.jar到lib下. 第二步:在工程的src下下建立log4j.properties.内容如下: #OFF,syste ...

  5. tomcat常用配置详解和优化方法

    tomcat常用配置详解和优化方法 参考: http://blog.csdn.net/zj52hm/article/details/51980194 http://blog.csdn.net/wuli ...

  6. spring-搭建-概念-配置详解-属性注入

    1 spring介绍  三层架构中spring位置 spring一站式框架 正是因为spring框架性质是属于容器性质的. 容器中装什么对象就有什么功能.所以可以一站式. 不仅不排斥其他框架,还能帮其 ...

  7. Log4j配置详解(转)

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

  8. logback 常用配置详解<appender>

    logback 常用配置详解 <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的 ...

  9. [转]阿里巴巴数据库连接池 druid配置详解

    一.背景 java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色 ...

随机推荐

  1. Python读取配置文件,并连接数据库SQL Server

    用配置文件保存固定的连接数据,改的话比较方便. 1.新建一个配置文件:SQlconfig.config,以数据库为例. 内容如下,当然也可以添加多个 [Database1] database=db_t ...

  2. Java基础学习笔记二十二 网络编程

    络通信协议 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样.在计算机网络中,这些连接和通信的规则 ...

  3. JavaScript(第三天)【数据类型】

    学习要点: 1.typeof操作符 2.Undefined类型 3.Null类型 4.Boolean类型 5.Number类型 6.String类型 7.Object类型 ECMAScript中有5种 ...

  4. C语言作业第二次总结

    1.作业亮点 1.1作业整体概况 本次作业全体同学能够按时完成作业,且大部分同学的作业体现了自己的思路和方法,具备了一定变成能力. 1.2推荐博客 林岳-代码注释清晰,详细.->博文 王艺斌-算 ...

  5. 【Alpha版本】冲刺阶段 - Day7 - 靠泊

    Alpha:指集成了主要功能的第一个试用版本.在这个版本中有些小功能并未实现.事实上很多软件的 Alpha 版本只是在内部使用.给外部用户使用的 Alpha 版本会起一个比较美妙的名字,例如,技术预览 ...

  6. 20155215 第二周测试1 与 myod

    课堂测试 第一题 每个.c一个文件,每个 .h一个文件,文件名中最好有自己的学号 用Vi输入图中代码,并用gcc编译通过 在Vi中使用K查找printf的帮助文档 提交vi编辑过程截图,要全屏,包含自 ...

  7. win7开启wifi

    在启用本地共享连接时,出现的错误! 我已经建了一个无线临时网络,来启用共享用来上网的!Internet连接共享访问被启用时,出现了一个错误(null)?而且这错误也会在系统日志里留下记录,都是些莫名其 ...

  8. QTableView

    QTableView常用于实现数据的表格显示.下面我们如何按步骤实现学生信息表格: 一 添加表头 //准备数据模型     QStandardItemModel *student_model = ne ...

  9. HTML5的新的结构元素介绍

    HTML5的新的结构元素介绍 一.HTML5与HTML4的区别 1. 取消了一些过时的HTML4的标签 其中包括纯粹显示效果的标记,如<font>和<center>,它们已经被 ...

  10. Scrum 冲刺 第五日

    目录 要求 项目链接 燃尽图 问题 今日任务 明日计划 成员贡献量 要求 各个成员今日完成的任务(如果完成的任务为开发或测试任务,需给出对应的Github代码签入记录截图:如果完成的任务为调研任务,需 ...