Sl4J日志使用

日志框架使用配置

1、日志框架Slf4j的引入

 <dependency>
     <groupId>org.projectlombok</groupId>
     <artifactId>lombok</artifactId>
 </dependency>

2、日志框架Slf4j的基本使用

使用注解@Slf4j,日志调用方法log.debug()等

    @Test
    public void contextLoads() {
        log.debug("debug......");
        log.info("info.......");
        log.error("error.......");
        log.info("info.......");
        log.info("info.......");
    }

3、日志框架变量输出形式

log.debug(“name {},password {}”,name,password) 如图

img

4、日志框架配置文件

  • 基本配置application.yml
logging:
  pattern:
    console: "%d - %msg%n"   #日志输出格式
  file:/var/log/tomcat/sell.log  #日志文件输出位置
  level:
    com.sell.LoggerTest: debug  # 某个输出的日志级别
  • 标准xml配置–建立logback-spring.xml文件
<?xml version="1.0" encoding="UTF-8" ?>

<configuration>
    <!--logback配置类原路径(控制台日志输出)-->
    <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
        <!--logback 日志展现样式  -->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <!--日志格式-->
            <pattern>
                %d - %msg%n
            </pattern>
        </layout>
    </appender>

    <!--日志文件输出配置-->
    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--过滤对应级别的日志-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!--过滤的日志级别-->
            <level>ERROR</level>
            <!--匹配就禁止-->
            <onMatch>DENY</onMatch>
            <!--未匹配到就使用-->
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <encoder>
            <pattern>
                %msg%n
            </pattern>
        </encoder>
        <!--滚动策略、按照时间滚动。每天一个日志文件-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路径 -->
            <fileNamePattern>/var/log/tomcat/sell/info.%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>

    <!--日志文件输出配置-->
    <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--根据范围过滤-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <!--只输出error日志-->
            <level>ERROR</level>
        </filter>
        <encoder>
            <pattern>
                %msg%n
            </pattern>
        </encoder>
        <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路径-->
            <fileNamePattern>/var/log/tomcat/sell/error.%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>
    <!--配置到整个项目,级别是info-->
    <root level="info">
        <!--对应控制台日志配置名称-->
        <appender-ref ref="consoleLog" />
        <!--对应日志文件info级别日志输出-->
        <appender-ref ref="fileInfoLog" />
        <!--对应日志文件error级别日志输出-->
        <appender-ref ref="fileErrorLog" />
    </root>

</configuration>
### 使用 SLF4J 和 Lombok 进行日志记录 为了简化 Java 日志记录并减少样板代码,可以结合使用 SLF4J 和 Lombok 库。这种方式不仅能够提供灵活的日志管理功能,还能通过编译期注解处理器自动生成大量重复性的代码。 #### 添加依赖项 首先,在项目中引入必要的 Maven 或 Gradle 依赖: 对于 Maven 用户来说,需在 `pom.xml` 文件内加入如下配置片段[^1]: ```xml <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>2.0.7</version> </dependency> <!-- Choose one of binding implementations --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.4.8</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.26</version> <scope>provided</scope> </dependency> ``` 而对于采用 Gradle 构建工具的情况,则应在 `build.gradle` 中指定相应的库版本: ```groovy implementation 'org.slf4j:slf4j-api:2.0.7' // Select an appropriate logging framework backend like Logback runtimeOnly 'ch.qos.logback:logback-classic:1.4.8' compileOnly 'org.projectlombok:lombok:1.18.26' annotationProcessor 'org.projectlombok:lombok:1.18.26' ``` #### 编写简洁的日志记录类 接下来展示一段利用上述技术栈实现的日志记录样例程序: ```java import lombok.extern.slf4j.Slf4j; @Slf4j public class Example { public static void main(String[] args) { log.info("Application started."); try { int result = divide(10, 0); log.debug("Result is {}", result); } catch (ArithmeticException e) { log.error("Error occurred while dividing numbers", e); } } private static int divide(int numerator, int denominator) throws ArithmeticException{ return numerator / denominator; } } ``` 在这个例子中,借助于 Lombok 提供的 `@Slf4j` 注解,开发者无需手动声明静态 logger 变量即可直接调用各种级别的日志方法(info(), debug() 等)。这大大减少了冗余代码的数量,并提高了开发效率。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

john_heping

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值