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


    使用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

    配置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

    测试

    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信息");
        }
    }

    Intellij IDEA中显示颜色

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

    运行结果

    运行结果:

    运行结果

    文件输出:

    文件输出

  • 相关阅读:
    代码写界面的工厂类
    Masonry的一些等间距布局
    开发中的小细节随记
    ios7 实现应用内保真截屏
    利用GCD实现单利模式的宏代码
    AVAudioPlayer的锁屏播放控制和锁屏播放信息显示
    NSXMLParser自定义的一个xml解析工具
    利用NSURLSession完成的断点续传功能
    AVFoundation下的视频分帧处理
    Redis自学笔记:4.2进阶-过期时间
  • 原文地址:https://www.cnblogs.com/kunsoft/p/13675288.html
Copyright © 2020-2023  润新知