【Java】Java日志框架Logback的简单例子

常用的日志框架

  • SLF4J,全称Simple Logging Facade for Java,即Java简单日志外观框架,顾名思义,它并非具体的日志实现,而是日志外观框架
  • java.util.logging,是JDK自带的一个日志实现框架
  • Logback,一个流行的日志实现框架
  • LOG4J,一个流行的日志实现框架

java.util.logging

java.util.logging,JDK自带的一个日志实现框架,我们并没有在项目中使用,但在个人练习中常使用来打印日志,来个最简单的例子。

import java.util.logging.Logger;

public class HowToUse {

    public static void main(String[] args) {
         Logger logger = Logger.getLogger("HowToUse"); // 默认级别info
         
         /* 各打印级别 */
         logger.severe("severe");
         logger.warning("warning");
         logger.info("info");
         logger.config("config");
         logger.fine("fine");
         logger.finer("finer");
         logger.finest("finest");
    }

}

日志:

五月 29, 2017 7:44:40 上午 HowToUse main
严重: severe
五月 29, 2017 7:44:41 上午 HowToUse main
警告: warning
五月 29, 2017 7:44:41 上午 HowToUse main
信息: info

Logback

一款基于SLF4J外观的日志实现,用POM.XML引入Logback你会发现依赖并引入SLF4J

<dependency>
	<groupId>ch.qos.logback</groupId>
	<artifactId>logback-classic</artifactId>
	<version>1.1.11</version>
	<scope>test</scope>
</dependency>

Logback的配置中有几个比较重要,loogerrootappender,结构图如下:

一个简单的配置文件:

<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <property name="Application_Name" value="Logback-Exercies" /> <!-- 公用属性 -->
    <contextName>${Application_Name}</contextName> <!-- 上下文名称 -->

    <!-- 控制台输出 -->
    <appender name="CONSOLE_OUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n
            </pattern>
        </encoder>
    </appender>

    <!-- 滚动日志文件输出 -->
    <appender name="ROLLING_FILE_OUT"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>D:/logs/${Application_Name}.%d{yyyy-MM-dd}.log
            </fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n
            </pattern>
        </encoder>
    </appender>
    
    <!-- 专门为com.nicchagil包下定义的输出 -->
    <appender name="SPECIFIED_FILE_OUT" class="ch.qos.logback.core.FileAppender">
        <file>D:/logs/${Application_Name}_Specified.log</file>
        <append>true</append>
        <encoder>
            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n
            </pattern>
        </encoder>
    </appender>

    <!-- 根logger的定义 -->
    <root level="INFO">
        <appender-ref ref="CONSOLE_OUT" />
        <appender-ref ref="ROLLING_FILE_OUT" />
    </root>

    <!-- 为com.nicchagil包专属logger的定义 -->
    <logger name="com.nicchagil" level="DEBUG">
        <appender-ref ref="SPECIFIED_FILE_OUT" />
    </logger>
    
</configuration>

声明Logger:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

private final Logger logger = LoggerFactory.getLogger(MySimpleJob.class);

LOG4J

LOG4J,一个流行的日志实现框架,很多公司在使用,这里不讨论。
如使用它,则引用:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.25</version>
</dependency>
posted @ 2017-05-29 15:10  nick_huang  阅读(1074)  评论(0编辑  收藏  举报