java 日志 slf4j, log4j, logback

来源:互联网 发布:税控盘安装软件 编辑:程序博客网 时间:2024/05/22 04:45
人称 logback 性能好于 log4j
slf4j:是规范/接口
日志实现:log4j,logback,common-logging等
Logback是由log4j创始人Ceki Gülcü设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。

<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-core</artifactId>
  <version>1.1.2</version>
  </dependency>
  <dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-access</artifactId>
  <version>1.1.2</version>
  </dependency>
  <dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>1.1.2</version>
  </dependency>

- Logger:日志的记录器,把它关联到应用的对应的context上后,主要用于存放日志对象,也可以定义日志类型、级别。Logger对象一般多定义为静态常量.
- Appender:用于指定日志输出的目的地,目的地可以是控制台、文件、远程套接字服务器、 MySQL、 PostreSQL、Oracle和其他数据库、 JMS和远程UNIX Syslog守护进程等。
- Layout:负责把事件转换成字符串,格式化的日志信息的输出。

LogBack配置文件:logback.xml

文件存放在resources目录下:

<configuration>
     <!--输出console-->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!--输出格式-->
        <encoder>
            <pattern>%d{HH:mm:ss} %-5level [%thread] %logger{36}.%M - %msg%n
            </pattern>
        </encoder>
    </appender>
    <!--输出到文件-->
    <appender name="MQTTPubFILE"
    class="ch.qos.logback.core.rolling.RollingFileAppender">

        <!--消息过滤 debug执行日志,否则抛弃-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY </onMismatch>
        </filter>
        <!--日志输出的文件名,路径项目根目录-->
        <file>mqttPub.log</file>
        <!--时间回滚,当天的记录记录在当天的已时间命名的文件中-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover -->
            <fileNamePattern>mqttPub.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- keep 3 days' worth of history -->
            <maxHistory>3</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss} %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="类路径" level="debug">
        <!--指定日志输出方式,引用定义的appender-->
        <appender-ref ref="MQTTSubFILE" />
    </logger><!-- 日志输出规则 根据当前ROOT 级别,日志输出时,级别高于root默认的级别时 会输出 -->
   <!-- 打印info级别日志及以上级别日志 -->
    <root level="info">
        <appender-ref ref="STDOUT" />
   </root></configuration>

LogBack在代码中的使用:

private static final Logger logger = LoggerFactory.getLogger(xxx.class);
logger.debug(xxx);
终上所述,现在推荐的方案是 slf4j + logback 这样方便换别的日志实现 。一直使用 slf4j 接口。

相关:
http://blog.csdn.net/canot/article/details/53340295
项目主页:https://logback.qos.ch/
https://logback.qos.ch/manual/index.html

阅读全文
0 0