Apache log4j的官方介绍是“log4j is a reliable, fast and flexible logging framework (APIs) written in Java, which is distributed under the Apache Software License. log4j is highly configurable through external configuration files at runtime. It views the logging process in terms of levels of priorities and offers mechanisms to direct logging information to a great variety of destinations, such as a database, file, console, UNIX Syslog, etc.”,翻译过来就是:log4j是基于Apache Software License发行的可靠、快速、可扩展的日志框架。log4j具有高可配置性,可以在运行的过程中通过外部文件配置它。log4j能够根据不同的级别优先权来过滤日志,并且提供了一种机制,能够将日志记录直接写到控制台,文件,数据库,UNIX系统日志等。

  上面的官方介绍,不光对log4j进行了定义,也对log4j的特点性能进行了阐述。log4j主要由logger(记录器),appender(输出源),layout(布局模式)三部分组成,其中logger用来捕获日志信息,layout用来对日志信息进行格式化,appender用来定义日志的输出源。具体的架构可以参加下图:

  log4j的安装方式与添加普通的.jar类库文件相同,可以到官网(http://logging.apache.org/log4j/2.x/)下载相关的包,有区别的是log4j需要添加上面提到的配置文件。

  那么配置文件应该如何写呢?

  log4j配置文件,全称为“log4j.properties”,采用key-value的形式保存参数,也可以采用XML文档形式来编写配置参数。一般情况下,log4j.properties需要包含过滤级别,日志目录,日志文件名,输出源,输出源的详细实现类,布局模式,以及相应的格式化参数等配置信息,详细内容如下:

  过滤级别:ALL,TRACE,DEBUG,INFO,WARN,ERROR,FATAL

  输出源:FILE,DB,Console,对应的详细实现类为org.apache.log4j.FileAppender,org.apache.log4j.JDBCAppender,org.apache.log4j.ConsoleAppender。

  布局模式:PatternLayout,HTMLLayout,其中PatternLayout的相应格式化参数(%[])如下表:

C              输出发出日志记录请求的类的完全限定名,如org.example.demo.Test;
d  输出发生日志记录事件的日期,如%d{HH:mm:ss};
m  输出与日志记录事件相关联的应用程序的信息;
M  输出发出日志记录请求的方法的名称;
n  输出与系统平台相关的换行符;
p  输出日志的过滤级别;
X  输出发出日志记录请求的客户端的IP,如X{clientIP};

  一个采用key-value形式的具体示例如下:

# Define the root logger and the directory of log file.
logDir = E:/temp
log4j.rootLogger = DEBUG, FILE # Define the file appender
log4j.appender.FILE = org.apache.log4j.FileAppender
log4j.appender.FILE.File = ${logDir}/log.txt # Define the layout for the file appender
log4j.appender.FILE.layout = org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern = %m%n

  log4j.properties配置文件分为三部分,第一部分配置了日志文件的保存目录logDir,同时说明将日志的过滤级别设置为DEBUG,输出源是FILE;第二部分配置了输出源的详细实现类org.apache.log4j.FileAppender,日志文档名称log.txt;第三部分则规定了日志文档的布局模式PatternLayout,及详细的格式化参数%m%n。

  上述配置文件的示例用XML形式编写后如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration> <appender name="FILE" class="org.apache.log4j.FileAppender"> <param name="file" value="E:temp/log.txt"/>
<param name="immediateFlush" value="true"/>
<param name="threshold" value="debug"/>
<param name="append" value="false"/> <layout class="org.apache.log4j.PatternLayout">
<param name="conversionPattern" value="%m%n"/>
</layout>
</appender> <logger name="log4j.rootLogger" additivity="false">
<level value="DEBUG"/>
<appender-ref ref="FILE"/>
</logger> </log4j:configuration>

  配置完log4j.properties是不是就可以编写Java程序运行了?

  其实,到这里log4j的配置工作还没有结束,还需要确定log4j.properties文件应该放置在哪个位置。官方介绍说log4j.properties应该放置到PATH或者CLASSPATH所在目录当中,但是如果按照这样操作,遇到每个Java工程都需要定制配置文件问题时,将会很容易造成命名冲突。合适的作法是将log4j.properties与具体的Java工程关联,将log4j.properties放置到src包中。或者用一种更值得推荐的做法:在Java工程根目录下新建config目录 > 将log4j.properties放置到config目录中 > 鼠标右击config目录 > 选择Build Path > 单击Use as Source Folder。

  现在就可以写个Java类运行一下了,示例如下:

 package org.warnier.zhang.demo;

 import org.apache.log4j.Logger;

 public class Test {
/**
* 获得记录器;
*/
static Logger logger = Logger.getLogger(Test.class); public static void main(String[] args) {
logger.debug("DEBUG > Hello World!");
logger.info("INFO > Hello World!");
} }

  到此,Apache log4j简明教程(一)就结束了,下一讲将会讲解如何将日志输出到MySQL数据库。希望次教程能够给有困扰的读者一点帮助。当然,由于笔者水平有限,如果有错误,欢迎读者留言交流。

Tips & Tricks:Apache log4j简明教程(一)的更多相关文章

  1. Tips & Tricks:Apache log4j简明教程(二)

    在上一讲Apache log4j简明教程(一)中介绍了log4j的基本概念,配置文件,以及将日志写入文件的方法,并给出了一个详细的示例.这一讲,我在继续谈一谈如何使用log4j将日志写入MySQL数据 ...

  2. 简明log4j配置教程

    先准备好log4j需要对应的开发包: apache-log4j-extras-1.2.17.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar 然后就是在项 ...

  3. Docker简明教程

    Docker简明教程 [编者的话]使用Docker来写代码更高效并能有效提升自己的技能.Docker能打包你的开发环境,消除包的依赖冲突,并通过集装箱式的应用来减少开发时间和学习时间. Docker作 ...

  4. HTML简明教程(一)

    HTML简明教程(一) 内容主体来自:W3School 一.HTML 简介 二.HTML 基础 三.HTML 元素 四.HTML 属性 五.HTML 标题 六.HTML 段落 七.HTML 文本格式化 ...

  5. [转]LOG4J汇编教程edit Z10

    摘自:http://wucuixia.blog.sohu.com/12057602.html LOG背景 我们在编程时经常不可避免地要使用到一些日志操作,比如开发阶段的调试信息.运行时的日志记录及审计 ...

  6. Log4J入门教程(二) 参数讲解

    继续接着Log4J入门教程(一)中的例子进行讲解,其中log4j.properties中的内容为    Log4j的三个重要组件—— Loggers, Appenders, Layouts ,这三个组 ...

  7. appium简明教程

    appium简明教程 什么是appium? 下面这段介绍来自于appium的官网. Appium is an open-source tool you can use to automate mobi ...

  8. CGIC简明教程(转摘)

    CGIC简明教程 本系列的目的是演示如何使用C语言的CGI库“CGIC”完成Web开发的各种要求. *********************************     基础知识       1 ...

  9. SaltStack简明教程

    第1章 SaltStack简明教程 1.1 SaltStack简介 SaltStack是基于Python开发的一套C/S架构配置管理工具(功能不仅仅是配置管理,如使用salt-cloud配置AWS E ...

随机推荐

  1. Sliverlight之 控件模板

    1,控件模板 (见Project22) (1) 什么是控件模板,查中文帮助 说明:当控件自身属性已经无法达到你对控件外观设置的要求时(比如将按钮作成圆形),此时控件模板就发挥了很大的作用 使用: &l ...

  2. POJ 2538 WERTYU水的问题

    [题目简述]:题意非常easy,没有trick. [分析]:事实上这题还是挺有趣的,在 算法竞赛入门经典中也有这一题. 详见代码: // 120K 0Ms /* 边学边做 -- */ // 字符串:W ...

  3. javascript 的bind/apply/call性能

    javascript有两种使用频率非常高的三个内置的功能:bind/apply/call.许多技术是基于高点,这些功能实现.这三个功能被用来改变的功能运行环境.从而达到代码复用的目的. 先来所说bin ...

  4. C# WinForm多线程(一)Thread类库

    Windows是一个多任务的系统,如果你使用的是windows 2000及其以上版本,你可以通过任务管理器查看当前系统运行的程序和进程.什么是进程呢?当一个程序开始运行时,它就是一个进程,进程所指包括 ...

  5. css--左右visibility建立 “collapse”值问题

    1.您可能已使用visibility一千次,最常用的是visible和hidden.它用来显示或隐藏元素. 有第三很少已使用的值它是collapse,在表格的行,列中使用有差异外,他和hidden的作 ...

  6. 【Web探索之旅】第二部分第四课:数据库

    内容简介 1.第二部分第四课:数据库 2.第二部分第五课预告:响应式网站 第二部分第四课:数据库 说到“数据库”,顾名思义,是“数据的仓库”的意思. 所以数据库的一大作用就是储存数据咯. 为什么Web ...

  7. Singleton模式线程相关的(C\C++)

    这种需求的最新发展. 我需要一个静态类,无论地方,我可以在线程中调用它public功能对应的功能已经完成. 这个静态类会调用我初始化给它的一个指针,这个指针是与线程一一相应的: 准确来说这样的模式应该 ...

  8. zend studio 安装emmet(zen coding)

    help->Install New Software 在work with后面点击Add,弹出的对话框中填写信息: Name:随意 Location:http://emmet.io/eclips ...

  9. 又一次认识HTML,CSS,Javascript 之node-webkit 初探

    今天我们来系统的.全面的 了解一下前端的一些技术,将有助于我们写出 更优秀的 产品 出来. 什么是HTML? HTML 是用来描写叙述网页的一种语言. HTML 包括一些根节点.子节点,文本节点.属性 ...

  10. Bash多个配置文件通常用于

    Login shells阅读下面的启动文件: 文件 内容 /etc/profile 对全部用户开放的全局配置文件 ~/.bash_profile 某个用户个人的启动文件,能用作个人的全局设置 ~/.b ...