Java使用Log日志系统(common-logging和log4j)

41人阅读 评论(0) 收藏 举报
分类:

使用common-logging和log4j

准备开一大项目的话,日志系统必不可少。Apache为了让众多的日志工具有一个相同操作方式,实现了一个通用日志工具包:commons-logging。而Log4j基本上是Java平台上最好的日志组件了。

使用ommons-logging的Log接口,并由commons-logging在运行时决定使用哪种日志架构(如Log4j)。现在,Apache通用日志工具commons-logging和Log4j已经成为Java日志的标准工具。

日志级别

log4j主要有如下的信息级别:

  • fatal:非常严重的错误,导致系统中止。期望这类信息能立即显示在状态控制台上。
  • error:其它运行期错误或不是预期的条件。期望这类信息能立即显示在状态控制台上。
  • warn:使用了不赞成使用的API、非常拙劣使用API, ‘几乎就是’错误, 其它运行时不合需要和不合预期的状态但还没必要称为 “错误”。期望这类信息能立即显示在状态控制台上。
  • info:运行时产生的有意义的事件。期望这类信息能立即显示在状态控制台上。
  • debug:系统流程中的细节信息。期望这类信息仅被写入log文件中。
  • trace:更加细节的信息。期望这类信息仅被写入log文件中。

通常情况下,我们希望将info级别以上的日志信息输出到控制台,而debug级别以上的信息写入到log文件中,而error信息写入到一个单独的文件中去,下面我们的实例将会实现这样的功能。

Maven/Jar包

需要使用commons-logging.jar和log4j.jar包。如果使用Maven,则需要在pom中添加:

<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

项目结构

项目结构

配置common-logging.properties文件

只需要一行即可,放在classpath下,如果是Maven中就在src/resources下

org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
  • 1

配置log4j.properties文件

放在classpath下,如果是Maven中就在src/resources下。具体意义看注释。

### set log levels ###
log4j.rootLogger = debug , stdout , D , E

### 输出到控制台 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
## 输出INFO级别以上的日志
log4j.appender.stdout.Threshold = INFO
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{1}:%L - %m%n

### 输出到日志文件 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = D:/logs/log.log
log4j.appender.D.Append = true
## 输出DEBUG级别以上的日志
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

### 保存异常信息到单独文件 ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
## 异常日志文件名
log4j.appender.E.File = D:/logs/error.log
log4j.appender.E.Append = true
## 只输出ERROR级别以上的日志!!!
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

测试

package com.zzkun;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * Created by kun on 2016/5/13.
 */
public class LogTest {

    private static Log logger = LogFactory.getLog(LogTest.class);

    public static void main(String[] args) {
        logger.trace("我是trace信息");
        logger.debug("我是debug信息");
        logger.info("我是info信息");
        logger.warn("我是warn信息");
        logger.error("我是error信息");
        logger.fatal("我是fatal信息");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

Intellij IDEA中显示颜色

默认是不显示颜色的,安装一个插件后即可显示:Grep Console

运行结果

运行结果:

运行结果

文件输出:

文件输出

转载自:https://blog.csdn.net/geekun/article/details/51398621
查看评论

log4j和common-logging结合使用

在我们的日常开发中,经常需要通过输出一些信息进行程序的调试,如果到处都用system.out.println()则在项目发布之后要逐一删除,而log4j提供了一种新的调试输出机制以解决输出的问题。lo...
  • feiliu010
  • feiliu010
  • 2006-08-08 22:31:00
  • 2338

Log4j与common-logging联系与区别

总网上搜了些Log4j与common-logging的介绍,记录下。  一.Log4j  1.简介  Log4j是Apache的一个开放源代码项目  使用Log4j,我们可以很方便的来记录日志...
  • courage89
  • courage89
  • 2014-06-09 22:47:57
  • 7366

Java中的日志——Java.util.logging、log4j、commons-logging

Java中给项目程序添加log主要有三种方式,一使用JDK中的java.util.logging包,一种是log4j,一种是commons-logging。其中log4j和commons-loggin...
  • luoweifu
  • luoweifu
  • 2015-06-14 22:07:48
  • 20858

apache common logging和log4j区别

Apache common logging是一种log的框架接口,它本身并不实现log记录的功能,而是在运行时动态查找目前存在的日志库,调用相关的日志函数,从而隐藏具体的日志实现 log4j是具体的...
  • cloudeagle_bupt
  • cloudeagle_bupt
  • 2016-11-01 21:01:54
  • 1541

Java日志,需要知道的几件事(commons-logging,log4j,slf4j,logback)

如果对于commons-loging、log4j、slf4j、LogBack等都已经非常清楚了,可以忽略本文。几次解决日志冲突问题时对这几个概念的简单总结,希望对这块基础没有理解透的同学能有所帮助,当...
  • kobejayandy
  • kobejayandy
  • 2013-12-15 17:00:22
  • 7289

解密Log4j、SLF4J、Common-logging的区别

前面有一篇日志中简单的介绍了 log4j,同时也介绍了它与commons-logging的关系,但是突然冒出来一个slf4j,并且slf4j有取代commons-logging的趋势,所以,我们可以推...
  • chen3749102
  • chen3749102
  • 2016-10-12 13:33:03
  • 5059

log4j,log4j2,slf4j,common-logging,jdk-logging集成以及切换

log4j,log4j2,slf4j,common-logging,jdk-logging集成以及转换
  • xyznol
  • xyznol
  • 2017-02-16 20:30:56
  • 560

log4j使用详解--创建自己的日志系统

Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输出地;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最...
  • sain615
  • sain615
  • 2011-07-01 10:49:00
  • 4456

给OSGi程序添加日志

由于OSGi每个Bundle都有自己的独立的类加载器,所以如果将Log4j的配置放到一个Bundle中,是不能被其他Bundle共享的,而且也分散了对log的管理,显然不是太好。        比较...
  • zhulianhai0927
  • zhulianhai0927
  • 2012-05-22 15:38:45
  • 617

JavaWeb: log4j日志框架的使用

使用日志框架的目的是 帮助我们快速定位问题。 使用Log4j,我们可以控制日志信息的输出,我们可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人...
  • chenrushui
  • chenrushui
  • 2017-07-04 20:33:36
  • 445
    个人资料
    持之以恒
    等级:
    访问量: 2552
    积分: 265
    排名: 29万+
    文章分类
    文章存档