Published on

logback 日志使用

Authors

之前是使用log4j因为简单,不知为啥,就是不能自动加载log4j.properies配置,打算用logback了。 每次看见java一堆xml就怕了,耐心看完还是能整出来的。 我用了lombok,可以免去每个类都要写logger的麻烦。

maven引入依赖
      只引入该包,会提示没有配置日志格式,还需引入slf4j-simple包(该包的作用相当于logback.xml)
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </dependency>

搭配logback还需引入logback-classic和logback-core
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.2.3</version>
    </dependency>
      
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-core</artifactId>
      <version>1.2.3</version>
    </dependency>

引入使用lombok(可选)
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>RELEASE</version>
    </dependency>

新版本只需引入logback-classic和lombok即可,logback-classic包含了slf4j和logback-core

配置logback.xml

注意,该文件放入src/main/resources里面,之前我的resources放错位置了,导致不能正常加载。

<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">

    <contextName>fabric-h3sdk</contextName>

    <!--设置变量 -->
    <!-- 日志存放路径 -->
    <property name="log.path" value="/app/${projectname}}/logs" />
    <!-- 日志输出格式 -->
    <property name="log.pattern" value="%d{yyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%file,%line] - %msg%n" />
    <property name="log.pattern" value="%red(%d{yyy-MM-dd HH:mm:ss.SSS}) [%thread] %-5level %green(%logger{50} - [fuc:%method,%line]) - %msg%n" />



    <!-- 控制台输出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>

    <!--日志级别-->
    <root level="INFO">
    <!-- 只从控制台输出-->
        <appender-ref ref="console" />
    </root>

    <!-- 下面配置一些第三方包的日志过滤级别,用于避免刷屏 -->
    <logger name="org.mybatis" level="INFO"/>
    <logger name="org.springframework" level="WARN"/>
    <logger name="org.apache" level="WARN"/>
    <!--如果需要打印SQL,可以把下面的级别设置为DEBUG -->
    <logger name="com.heeexy.example.dao" level="DEBUG"/>

</configuration>

我只设置了命令行输出,够用就行。没有做本地文件保存,需要再加。

代码中使用

正常使用logback.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private final static Logger log = LoggerFactory.getLogger(CASDKTest.class);
直接 log.info("打印日志");

lombok使用

import lombok.extern.slf4j.Slf4j;

//在class上加入这个注解
@Slf4j
public class CASDKTest {
       void testFunction(){
            log.info("打印日志。");
      }
}

idea不提示lombok的注解,记得装lombok插件。

logback具体配置,参考

logback详解 logback配合lombok,使用