Log4J与java.util.logging.Logger的使用方式出奇的相似,因此如果先看这篇文章《Java日志工具之java.util.logging.Logger》在来用Log4J简直是水到渠成。

与java.util.logging.Logger的共性与不同

看看Log4J与java.util.logging.Logger的共性和不同吧:

  1. Log4J也是通过工厂方法获取Logger对象;
  2. Log4j的的Appender对等于logging.Logger的handler,都有控制台、文件等方式;
  3. Log4J的Layout对等于logging.Logger的Formatter;
  4. Log4J和logging.Logger都使用名称空间和继承关系;
  5. Log4J没有默认的Appender,但可以调用函数
    1. BasicConfigurator.configure()

    设置root的默认处理方式;而logging.Logger在默认的配置文件中为root默认配置了handler;

  6. Log4J日志级别略有不同:从低到高以此是TRACE,DEBUG,INFO,WARN,ERROR,FATAL;
  7. Log4J自定义配置文件更方便,因为它有相应的方法:
    1. PropertyConfigurator.configure

不用配置文件的示例

首先来个形象的代码:

  1. package net.oseye;
  2.  
  3. import org.apache.log4j.BasicConfigurator;
  4. import org.apache.log4j.ConsoleAppender;
  5. import org.apache.log4j.Level;
  6. import org.apache.log4j.Logger;
  7. import org.apache.log4j.PatternLayout;
  8.  
  9. public class RunMain {
  10.  
  11. public static void main(String[] args) {
  12. BasicConfigurator.configure();//默认配置,设置root的Appender
  13. Logger log=Logger.getLogger(RunMain.class);
  14. //添加一个Appender
  15. log.addAppender(new ConsoleAppender(new PatternLayout()));
  16. log.setLevel(Level.TRACE);
  17. log.warn("test");
  18. }
  19. }

Log4J没有默认的配置文件,所以如果没有给Logger添加Appender会报异常的,示例中设置了root的Appender,别的Logger可以继承root。而实例中又添加了一个自定义的Appender。

输出结果:

test
0 [main] WARN net.oseye.RunMain - test

使用配置文件的示例

  1. package net.oseye;
  2.  
  3. import java.io.File;
  4. import org.apache.log4j.Level;
  5. import org.apache.log4j.Logger;
  6. import org.apache.log4j.PropertyConfigurator;
  7.  
  8. public class RunMain {
  9.  
  10. public static void main(String[] args) {
  11. Logger log=Logger.getLogger(RunMain.class);
  12. PropertyConfigurator.configure("d:"+File.separator+"log4j.properties");
  13. log.setLevel(Level.TRACE);
  14. log.warn("test");
  15. }
  16. }

d:\log4j.properties配置文件内容如下:

  1. log4j.rootLogger=DEBUG, A1
  2. log4j.appender.A1=org.apache.log4j.ConsoleAppender
  3. log4j.appender.A1.layout=org.apache.log4j.PatternLayout
  4. log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n

输出:

0 WARN [main] net.oseye.RunMain - test

基本上是不是和java.util.logging.Logge一样,呵呵。了解更多配置文件讲解请看《Log4J配置文件详解》

Java日志工具之Log4J的更多相关文章

  1. java 日志技术汇总(log4j , Commons-logging,.....)

    前言 在Tomcat 与weblogic 中的 日志(log4j) 配置系列一 在系列一 中, 有一个问题一直没有解决,就是部署到weblogic 中应用程序如何通过log4j写日志到文件中? 这里仅 ...

  2. Java学习笔记(十九)——Java 日志记录 AND log4j

    [前面的话] 学习的进度应该稍微在快一点. Java日志到了必须学习怎么使用的时候了,因为在项目中要进行使用.基础性文章,选择性阅读. [结构] java日志对调试,记录运行,问题定位都起到了很重要的 ...

  3. Java日志框架 (commons-logging,log4j,slf4j,logback)

    转自:http://blog.csdn.net/kobejayandy/article/details/17335407 如果对于commons-loging.log4j.slf4j.LogBack等 ...

  4. Java日志工具之java.util.logging.Logger

    今天总结下JDK自带的日志工具Logger,虽然它一直默默无闻,但有时使用它却比较方便.更详细的信息可以查看JDK API手册,本文只是简单示例入门. 创建Logger 我们可以使用Logger的工厂 ...

  5. Java日志工具之SLF4J

    SLF4J全称为Simple Logging Facade for Java (简单日志门面),作为各种日志框架的简单门面或者抽象,包括 java.util.logging, log4j, logba ...

  6. Java日志框架Slf4j+Log4j入门

    一.日志系统介绍 slf4j,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统.简答的讲就是slf4j是一系列的日志 ...

  7. Java日志介绍(2)-Log4j

    Log4j是Apache的一个开源项目,官网地址为http://logging.apache.org/log4j/1.2/index.html.通过使用Log4j,可控制日志信息输出到控制台.文件.数 ...

  8. JAVA日志工具类

    package com.ming.util; import java.io.File; import java.io.FileWriter; import java.io.IOException; i ...

  9. 日志工具全面理解及配置应用---以Log4j例子

    一.日志系统基本常识 1.日志系统作用:将日志信息输出到控制台和文本文件,以追踪代码运行信息. 2.日志系统操作的是什么?日志系统打印信息,也是调用日志系统的log.Info(),log.Warn() ...

随机推荐

  1. 天兔(Lepus)监控邮件推送安装配置

    好吧,我承认官网的邮件配置教程我又没看懂,这里记录下我的配置方法 [root@HE3]# vi /usr/local/lepus/test_send_mail.py #!/usr/bin/envpyt ...

  2. OGG数据仓库以及单向复制(二)

    Configure Extract(提取)      Process in Source system 配置capture(捕获)参数 Edit extract process parameter G ...

  3. LIS算法

    LIS(Longest Increasing Subsequence)最长上升(不下降)子序列. 1. O(n^2) #include<cstdio> #include<algori ...

  4. atoi

    , KInvalid}; int g_nStatus=kValid; int StrToInt(const char *str) { g_nStatus=KInvalid; ; if((str!=NU ...

  5. jQuery插入节点(移动节点)

    jQuery插入节点(移动节点) <%@ page language="java" import="java.util.*" pageEncoding=& ...

  6. Winform ListView的用法

    清除数据: lvOrder.Items.Clear(); 赋值数据: if (lvList.Count != 0) { foreach (var item in lvList) { string[] ...

  7. SVG在网页中的四种使用方式

    1,直接打开simple.svg <svg xmlns="http://www.w3.org/2000/svg" width="200" height=& ...

  8. java二维码生成-谷歌(Google.zxing)开源二维码生成学习及实例

    java二维码生成-谷歌(Google.zxing)开源二维码生成的实例及介绍   我们使用比特矩阵(位矩阵)的QR码编码在缓冲图片上画出二维码 实例有以下一个传入参数 OutputStream ou ...

  9. json-lib之复杂数据类型的转换

    在json字符串转java bean时,一般的对象,可以直接转,如:一个学生类,属性有姓名.年龄等 public class Student{ private String sname; privat ...

  10. js事件对象

    哎,事件也有对象呦.程序员一直在讲对象对象,那么,过年是不是该带个对象回家呢?好了,既然事件有对象,承认这个事实吧!哈哈,那么,其就有属性,接下来,就放个 例子来讲讲,顺便把常用的属性也添加进去.. ...