`
mwhgJava
  • 浏览: 97985 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Log4j笔记 第一章 简单用上Log4j

阅读更多
第一节 概述
Log4j诞生,为减轻对成千上万的
System.out.println();
System.err.println();
e.printStackTrace();

(e为Throwable,包括Exception和Error)
语句的维护成本。

Log4j能够做更多的事。

通过仅修改配置文件,而不修改程序代码,控制日志记录语句是否记录日志,控制系统资源消耗。

本手册代码演示在eclipse中编辑。

第二节 简单使用Logger类
选一个新的workspace, 创建一个新的项目。
导入org.apache.log4j,编写一个示例类,用上Logger类的日志记录方法。
LoggerSnippet.java
package org.smiledsun.snippets.logger;

import org.apache.log4j.Logger;

public class LoggerSnippet {

    /**
     * 使用工厂方法获得Logger, 
     * Logger不通过new 创建出来的
     */
    private static final Logger logger = Logger.getLogger(LoggerSnippet.class);

    public static void main(String[] args) {
	log.trace("This is a trace message.");
	log.debug("This is a debug message.");
	log.info("This is a info message.");
	log.warn("This is a warn message.");
	log.error("This is an error message.");
	log.fatal("This is a fatal message.");
    }
}

说明:
1、使用时,Logger是通过工厂方法获得的。不通过new 创建出来的。(思考,为什么要通过工厂方法)
2、获得Logger的工厂方法的参数,一般为调用类的class。工厂方法使用类的类名,标示这个Logger。(思考,为什么要传入这个参数,可以传入其他吗)
3、Logger默认的日志级别分6级,trace、debug、info、warn、error、fatal。(log4j_1.2.12新添了trace在debug之下,之前为5个等级)。

第三节 简单配置log4j,让log4j工作
执行上面的类,控制台显示如下信息。
log4j:WARN No appenders could be found for logger (org.smiledsun.snippets.logger.LoggerSnippet).
log4j:WARN Please initialize the log4j system properly.

原因:没有加载log4j配置文件。
解决方法,在任意位置,编写如下内容的log4j.xml文件(文件名自定)。
<?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"/>  
	</appender>  
    <root > 
        <appender-ref ref="CONSOLE"/>  
  	</root>
</log4j:configuration>
 
再在执行你的应用程序时,配置虚拟机参数log4j.configuration为你的log4j.xml文件的URL路径。

场景1:在命令行中执行程序,配置log4j配置文件。
java -Dlog4j.configuration=File:D:\log4j.xml LoggerSnippet

场景2:在Eclipse中执行程序,配置log4j配置文件。
点击主菜单的“Run”->“Run Configurations”弹出“Run configurations”对话框,在左边选中刚刚运行过的“LoggerSnippet”,在右边找到“Arguments”中的“VM arguments:”输入“-Dlog4j.configuration=File:D:\log4j.xml”如附件log4j_run_configurations_vm_arguments.png

场景3:在导出后的eclipse RCP应用程序中,配置log4j配置文件。
打开在eclipse.exe同目录下的eclipse.ini文件(没有则新建一个),添加一行内容
“-Dlog4j.configuration=File:D:\log4j.xml”

补充知识:
1、通过命名行执行java程序的格式如下:java 虚拟机参数 类名 程序参数。
2、-D是java设置系统属性的专有前缀。
   可以通过System.getProperty(String key)获得。
3、File是文件协议类型的URL前缀。URL除了http协议类型,还有其他类型。
4、这里的D:log4j.xml可以是绝对URL路径,也可以是相对URL路径。

5、如果你只是在eclipse中执行你的应用程序,则可以在src目录下创建一个名为log4j.xml的文件。就不需要这些配置。
6、为什么是这样?想了解详细信息。
请阅读log4j源码,org.apache.log4j.LogManager.java文件。

再执行上面的类。控制台打印如下结果。
DEBUG - This is a debug message
INFO - This is an info message
WARN - This is a warn message
ERROR - This is an error message
FATAL - This is a fatal message

(注意:没有打印:"This is a trace message.",为什么呢?)
好了。我们的Log4j开始工作了。

第四节 Logger记录日志的方法
public void trace(Object message)
    记录消息message,级别为trace
public void trace(Object message, Throwable t)
记录消息message和异常/错误堆栈信息t,级别为trace

public void debug(Object message)
    记录消息message,级别为debug
public void debug(Object message, Throwable t)
记录消息message和异常/错误堆栈信息t,级别为debug

public void info(Object message)
    记录消息message,级别为info
public void info(Object message, Throwable t)
记录消息message和异常/错误堆栈信息t,级别为info

public void warn(Object message)
    记录消息message,级别为warn
public void warn(Object message, Throwable t)
记录消息message和异常/错误堆栈信息t,级别为warn

public void error(Object message)
    记录消息message,级别为error
public void error(Object message, Throwable t)
记录消息message和异常/错误堆栈信息t,级别为error

public void fatal(Object message)
    记录消息message,级别为fatal
public void fatal(Object message, Throwable t)
记录消息message和异常/错误堆栈信息t,级别为fatal

public void assertLog(boolean assertion, String msg)   
    如果assertion为false,记录消息msg,级别为error



第五节 配置文件
Log4j配置文件可以是.xml或.properties文件。老的版本只支持.properties。推介使用.xml文件,因为.xml文件结构更清晰、可读性更高,新版本的部分特性.properties文件已经不能配置或难配置了。

log4j默认从系统属性中的log4j.configuration获取log4j配置文件的url,找不到就从classpath中找 log4j.xml文件为配置文件,找不到就从classpath中找 log4j.properties配置文件。如果找不到,就打印上面的出错信息。详情见log4j源码,org.apache.log4j.LogManager.java文件。

详情参考本人日志: Log4j笔记 第一章 简单用上Log4j

可以通过编程的方法加载外部配置文件:使用
org.apache.log4j.PropertyConfigurator类的configure()方法。支持文件路径名,URL,Properties等多种形式。

在找不到配置文件时,也可以Logger.getRootLogger().setLevel(Level.OFF);关闭日志。

  • 大小: 43.9 KB
分享到:
评论

相关推荐

    Log4j笔记 第九章 封装Log4j

    《Log4j笔记 第九章 封装Log4j》 在Java开发中,日志记录是一项非常重要的任务,它帮助我们追踪程序运行时的状态,定位和解决错误。Log4j是Apache组织提供的一款强大的日志框架,因其高效、灵活和可配置性而广受...

    log4j-为文章提供下载资源

    标题“log4j-为文章提供下载资源”暗示了这是一个与log4j相关的资源,可能是为了辅助阅读或学习关于log4j的文章,比如《JAVA学习笔记07——Hibernate框架第一章》。log4j是Java日志记录的一个著名库,广泛应用于各种...

    JavaScript笔记第一章—课程准备.pdf

    `prompt()`函数用于显示一个对话框,提示用户进行输入,可以有两个参数,第一个是对话框中显示的纯文本,第二个是默认的输入文本。`alert()`函数用于弹出一个警告框,显示一条指定消息。`document.write()`函数用于...

    OCP042课程笔记

    此外,还提到了如何管理和访问ISQL*Plus,包括启动、停止和登录命令,以及如何在OC4J中添加用户并赋予webdba权限。 综上所述,OCP042课程笔记全面覆盖了Oracle数据库的基础知识,从架构到安装,再到实例和数据库的...

    李炎恢JavaScript-pdf文档笔记

    《李炎恢JavaScript-pdf文档笔记》是一份详细记录了JavaScript编程语言基础知识至高级应用的教程,涵盖了从第一章到第三十四章的丰富内容。这个压缩包包含了一份PDF文档,旨在帮助学习者深入理解并掌握JavaScript的...

    ORACLE经典学习笔记

    #### 第一章 ORACLE 命令 本章节主要介绍了Oracle数据库中常用的命令及其使用方法。 1. **查看参数文件**: `Desc v$parameter` - 这个命令用于查看Oracle的参数文件信息,通过查询`v$parameter`视图可以获取当前...

    Stanford University机械学习笔记

    **第一节 分类** 在机器学习领域,特别是监督学习中,分类是一项重要的任务。本节主要介绍逻辑回归算法应用于分类问题的基础概念及其工作原理。 首先,分类问题是机器学习的一个重要分支,它涉及到根据对象的特征...

    软考网络工程师复习笔记

    ### 第一章 计算机基础知识 #### 一、硬件知识 - **计算机系统的组成**:包括硬件系统和软件系统两大部分。 - **硬件系统**分为三种典型结构: 1. 单总线结构:所有部件共享一条总线进行数据交换。 2. 双总线...

    算法导论系列读书笔记之三

    作为“算法导论系列读书笔记之三”,本文将主要探讨第三章的内容,这一章通常聚焦于排序与选择算法,这些是数据处理的基础,对理解和优化程序性能至关重要。 在第一章和第二章中,我们可能已经接触到了基本的数据...

    javascript中的数组对象以及json学习笔记

    数组有一些内置的方法和属性,如`length`用于获取数组长度,`push`用于在数组末尾添加元素,`pop`用于移除并返回数组最后一个元素,`shift`用于移除并返回数组的第一个元素,`unshift`用于在数组开头添加元素,`...

    java私塾学习笔记整理

    #### 第一章:Java入门 **一、Java是什么?** Java是一种广泛使用的高级编程语言,由Sun Microsystems于1995年推出。它旨在为跨平台开发提供一种通用的语言环境,使开发者能够在任何支持Java的设备上运行相同的...

    Spring+Hibernate笔记

    它定义了初始化参数,如web应用程序的根目录(webAppRootKey)和log4j配置文件的位置(log4jConfigLocation),以及监听器来初始化日志系统。 1.2. 配置Eclipse环境对于提高开发效率至关重要。这包括创建Java工程,...

    第四章(js高级程序设计学习笔记)----2

    在本节中,我们将深入探讨JavaScript的高级程序设计,特别是关注"第四章(js高级程序设计学习笔记)----2"的主题。这一章很可能涵盖了JavaScript的核心概念,包括原型链(Prototype Chaining)。通过阅读名为...

    人大附中高一数学随堂笔记—第二章 函数[精选].doc

    第二章 函数是高中数学的重要组成部分,主要涵盖了函数的基本概念、表示法、单调性、反函数,以及指数和对数函数的应用。以下是本章详细的知识点解析: 一、函数 函数是数学中的一种基本结构,它描述了两个集合之间...

    algs4:算法第四章读书笔记

    选择排序每次从未排序的元素中找出最小(或最大)的元素,然后与未排序部分的第一个元素交换。快速排序是一种分治策略,通过选取一个“枢轴”元素将数组分为两部分,使得一部分的所有元素都小于另一部分,然后递归地...

    网络工程师学习笔记 (完整版).doc

    第一章 计算机基础知识 1. 硬件系统:计算机系统由硬件系统和软件系统组成。硬件系统分为三种典型结构:单总线结构、双总线结构和采用通道的大型系统结构。 2. 指令系统:指令由操作码和地址码组成。 3. 存储系统:...

    网络工程师学习笔记

    #### 第一章 计算机基础知识 ##### 一、硬件知识 - **计算机系统的组成**:分为硬件系统和软件系统。 - **硬件系统**:主要包括单总线结构、双总线结构以及采用通道的大型系统结构。 - **中央处理器(CPU)**:...

    Linux全攻略第一章目录认识

    本章主要探讨的是"Linux全攻略第一章:目录认识",这对于初学者来说是一份非常实用的学习资料。Linux的目录结构是其核心组成部分,理解它对于高效地操作和管理Linux系统至关重要。 Linux基于Unix系统,采用的是单一...

Global site tag (gtag.js) - Google Analytics