NetBeans如何使用slf4j输出日志

来源:互联网 发布:淘宝cf卖号是真的吗 编辑:程序博客网 时间:2024/06/13 22:03

在网上找了些资料阅读,本文结合网上资料和个人实践进行编写,本文一些内容直接取自不同的网上文章。



此处主要是slf4j+logback输出日志。按照1.1、1.1.1、1.1.2即可完成配置。


1.slf4j日志
参考:http://hanhongke123.blog.163.com/blog/static/62223494201241631644433/

Slf4j : 全称为Simple Logging Facade for JAVA:java简单日志门面。 是对不同日志框架提供的一个门面封装。可以在部署的时候不修改任何配置即可接入一种日志实现方案。

其实slf4j原理很简单,它只提供一个核心slf4j api(就是slf4j-api.jar包),这个包只有日志的接口,并没有实现,所以如果要使用就得再给它提供一个实现了些接口的日志包,比如:log4j,common logging,jdk log日志实现包等,但是这些日志实现又不能通过接口直接调用,实现上他们根本就和slf4j-api不一致,因此slf4j又增加了一层来转换各日志实现包的使用,当然slf4j-simple除外。

SLF4J结构
slf4j-api(接口层)
=>
各日志实现包的连接层( slf4j-jdk14, slf4j-log4j)
=>
各日志实现包

注意:如果有任意两个实现slf4j 的包同时出现,那就有可能酿就悲剧,你可能会发现日志不见了、或都打到控制台了。
原因是这两个jar 包里都有各自的org.slf4j.impl.StaticLoggerBinder ,编译时候绑定的是哪个是不确定的。
使用SLF4j 的时候为了避免冲突,一定要保障只有一种实现类jar 包在里面。

1.1.slf4j+logback
需要配置:
slf4j-api-1.6.4.jar
slf4j-jdk14-1.7.21.jar
logback-core-1.1.7.jar
logback-classic-1.1.7.jar
logback.xml

Logback : LOGBack 作为一个通用可靠、快速灵活的日志框架,将作为Log4j 的替代和SLF4J 组成新的日志系统的完整实现。官网上称具有极佳的性能,在关键路径上执行速度是log4j 的10 倍,且内存消耗更少。具体优势见:
http://logback.qos.ch/reasonsToSwitch.html

1.1.1.pom.xml
注意配置了logback的话,就不要配置slf4j-log4j12。否则,日志冲突,导致部署后无法输出日志文件。貌似引入slf4j-jdk14自动就引入slf4j-api-1.6.4.jar了。

<dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-jdk14</artifactId>
            <version>1.7.21</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.1.7</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.1.7</version>
        </dependency>

1.1.2.logback.xml
文件logback.xml放到src\main\resources目录下,如:src\main\resources\logback.xml
文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
    <withJansi>true</withJansi>
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} %highlight(%-5level) [%thread] %cyan(%logger) - %msg%n</pattern>
    </encoder>
  </appender>
  <appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <File>log/TServer.log</File>
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} %-5level [%thread] %logger - %msg%n</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>log/TServer.log.%d{yyyy-MM-dd}.log</fileNamePattern>
    </rollingPolicy>
  </appender>
  <logger name="com" level="debug">
    <appender-ref ref="consoleAppender,fileAppender" />
  </logger>
  <root level="trace">
    <appender-ref ref="consoleAppender" />
    <appender-ref ref="fileAppender" />
  </root>
</configuration>

原创粉丝点击