zoukankan      html  css  js  c++  java
  • Spring结合log4j(slf4j)

    maven依赖        

    <!-- slf4j (级联:log4j/slf4j-api) -->
    <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.5</version>
    </dependency>
     
    配置demo        

    log4j.properties
    # Output pattern : date [thread] priority category - message 
    log4j.rootLogger=info,console,logFile
     
    #Console
    log4j.appender.console=org.apache.log4j.ConsoleAppender
    log4j.appender.console.layout=org.apache.log4j.PatternLayout
    log4j.appender.console.layout.ConversionPattern=%d - xxl-net - %p [%c] - <%m>%n
     
    #RollingFile
    log4j.appender.logFile=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.logFile.File=${catalina.base}/logs/xxl-net.log
    log4j.appender.logFile.layout=org.apache.log4j.PatternLayout
    log4j.appender.logFile.layout.ConversionPattern=%d - xxl-net - %p [%c] - <%m>%n
    LogService.java
    private static transient Logger logger = LoggerFactory.getLogger(TriggerServiceImpl.class);
    logger.info("全站静态化... start:{}", start); 
    logger.info("全站静态化... end:{}, cost:{}", end, end - start);
     
    log4j 和slf4j的比较        

    SLF4J :JAVA简易日志门面(Simple Logging Facade for Java,缩写SLF4J)

    他是一套包装Logging 框架的接口程式,以外观模式实现。可在软件部署的时候决定要使用的 Logging 框架,目前主要支援的有Java Logging API、log4j及logback等框架。以MIT 授权方式发布。

    SLF4J 作者就是 log4j 的作者 Ceki G&uuml;lc&uuml;,他宣称 SLF4J 比 log4j 更有效率,比 Apache Commons Logging (JCL) 简单、稳定。

     

    SLF4J 与 log4j 的比较:

    1、log4j 提供 TRACE, DEBUG, INFO, WARN, ERROR 及 FATAL 六种纪录等级,但是 SLF4J 认为 ERROR 与 FATAL 并没有实质上的差别,所以拿掉了 FATAL 等级,只剩下其他五种。

    2、大部分人在程序里面会去写logger.error(exception),其实这个时候log4j回去把这个exception tostring。真正的写法应该是logger(message.exception);而slf4j就不会使得程序员犯这个错误。

    3、log4j间接的在鼓励程序员使用string相加的写法,而slf4j就不会有这个问题 ,你可以使用logger.error("{} is+serviceid",serviceid);

    4、使用slf4j可以方便的使用其提供的各种集体的实现的jar。(类似commons-logger)

    5、从commons--logger和log4j merge非常方便,slf4j也提供了一个swing的tools来帮助大家完成这个merge。

    6、提供字串内容替换的功能,会比较有效率,说明如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //传统的字符串产生方式,如果没有要记录Debug等级的信息,就会浪费时间在产生不必要的信息上
    logger.debug("There are now "+ count + " user accounts: "+ userAccountList);
     
    //为了避免上述问题,我们可以先检查是不是开启了Debug信息记录功能,只是程序的编码会比较复杂
    if(logger.isDebugEnabled()) {
        logger.debug("There are now "+ count + " user accounts: "+ userAccountList);
    }
     
    //如果Debug等级没有开启,则不会产生不必要的字符串,同时也能保持程序编码的简洁
    logger.debug("There are now {} user accounts: {}", count, userAccountList);

    7、SLF4J 只支持 MDC,不支持 NDC。

  • 相关阅读:
    MySQL-DQL查询语句的其他方法查询
    MySQL-SQL的分类以及基本的操作
    1-1-4-2 Java se-常量&变量-作用域
    1-1-4-1 java se-常量&变量-基本数据类型
    1-1-2-1 java se-helloworld原理—java代码的编译和运行逻辑
    1-1-1-2 Java se-java运行环境-jvm虚拟机的跨平台性以及和jdk,jre之间的关系
    1-1-1-1 java se-java运行环境-基本单位bit和Byte
    递归
    Ultra-QuickSort (POJ 2299)树状数组+离散化
    Color the ball(HDU1556)树状数组
  • 原文地址:https://www.cnblogs.com/xuxueli/p/4635413.html
Copyright © 2011-2022 走看看