logback的基本使用

业务场景

  1. 业务逻辑中:在业务逻辑中,你可以使用 Logback 记录与业务相关的信息、警告和错误。例如,在订单处理系统中,你可以使用日志记录跟踪订单的处理状态、记录异常情况,以及记录用户操作等。这有助于排查问题、监视业务流程和追踪应用程序行为。
  2. 异常处理中:在应用程序中的异常处理代码中,你可以使用 Logback 记录异常详细信息,包括异常堆栈跟踪。这有助于开发人员了解异常原因以及如何修复它们。
  3. 性能监控中:你可以使用 Logback 记录应用程序的性能数据,如响应时间、请求处理时间等。这些信息有助于监视应用程序的性能,以及识别可能的性能问题。
  4. 安全审计中:在涉及安全性的应用程序中,Logback 可用于记录用户登录、权限更改和其他关键操作。这些日志可用于审计和合规性检查。
  5. 调试中:在开发和测试阶段,Logback 是调试代码的有力工具。你可以在代码中插入调试信息,以便在需要时启用它们,并在调试时查看日志输出。
  6. 集成和监控中:在应用程序中,Logback 可以与监控和集成工具集成,以实时监视和分析日志数据。这有助于运维人员追踪应用程序的状态并及时采取行动。
  7. 异常处理和错误日志中:在应用程序出现错误或异常时,Logback 可以用于记录错误日志,包括错误消息、异常堆栈跟踪和错误码。这些错误日志对于故障排除和问题定位非常有帮助。

在实际应用中,你可以根据应用程序的要求和需求,在代码的适当位置插入 Logback 记录语句。要注意配置 Logback,以确定日志记录的级别和输出目标(如控制台、文件、数据库等)。根据日志的不同用途,可以有不同的记录级别,如 DEBUG、INFO、WARN、ERROR 等。

第一种方式

导入依赖

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>

创建配置文件:

只打印在控制台

<?xml version="1.0" encoding="UTF-8"?>
<!-- 配置根节点
     scan:设置为true时,如果配置文件发生了改变,将会自动重新加载,默认值为true;
     scanPeriod:设置检测配置文件是否发生改变的间隔时间,默认是1分钟。如果没有指定单位,那么默认单位就是毫秒;
     debug:设置为true时,将打印出logback内部的日志,用于查看logback运行状态。默认值为false-->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- appender节点用于设置日志的输出目的地,可以输出到控制台、文件、数据库等 -->
    <!-- name属性指定appender的别名,class指定输出目标的具体实现类,例如:ConsoleAppender是用于输出到控制台-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!-- pattern指定日志的输出格式
                 %d:指定日志输出的日期格式
                 %t:当前输出日志的线程名称
                 %p:日志的级别
                 %C:输出日志所在的类的完整类名
                 %m:日志内容
                 %n:换行符
             -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %p %C - %m%n</pattern>
        </encoder>
    </appender>
    <!-- 设置日志输出的根,并指定日志的级别。
         日志输出级别从小到大顺序:trace < debug < info < warn < error
         例如:当level设置为info时,那么小于info级别的日志将不被输出-->
    <root level="info">
        <!-- 引用上面配置的appender的name -->
        <appender-ref ref="console"/>
    </root>
</configuration>

打印到控制台并且保存到一个文件中:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 输出到控制台 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!-- 日志输出格式 -->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %p %C - %m%n</pattern>
        </encoder>
    </appender>
    <!-- 指定日志输出类型,FileAppender用于输出到文件-->
    <appender name="file" class="ch.qos.logback.core.FileAppender">
        <!-- 指定日志文件保存的路径,可以是相对路径,也可以是绝对路径;如果目录不存在则会自动创建 -->
        <file>ch02/log/test.log</file>
        <!-- append设置为true表示日志追加到文件末尾,如果为false则每次输出会先清空原有的内容再写入新日志-->
        <append>true</append>
        <!-- 日志输出格式 -->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %p %C - %m%n</pattern>
        </encoder>
    </appender>

    <root level="info">
        <!-- 引用上面的console appender -->
        <appender-ref ref="console"/>
        <!-- 引用上面的file appender -->
        <appender-ref ref="file"/>
    </root>
</configuration>

滚动日志:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 使用滚动日志,每天生成一个日志文件 -->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 配置滚动策略, TimeBasedRollingPolicy是最常用的滚动策略,它可以根据时间来定制生成不同的日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 指定滚动深层的文件名(以日期作为文件名) -->
            <fileNamePattern>ch03/log/%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 决定保留归档日志的最大数量, 这里设置为30表示只保留最近30天的日志文件-->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <!-- 日志输出格式 -->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %p %C - %m%n</pattern>
        </encoder>
    </appender>

    <root level="info">
        <appender-ref ref="file"/>
    </root>
</configuration>

输出到数据库中:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 将日志输出到数据库中 -->
    <appender name="mysql" class="ch.qos.logback.classic.db.DBAppender">
        <!-- 配置数据源-->
        <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
            <!-- 这里使用alibaba的druid连接池作为数据源 -->
            <dataSource class="com.alibaba.druid.pool.DruidDataSource">
                <driverClassName>com.mysql.cj.jdbc.Driver</driverClassName>
                <url>jdbc:mysql://localhost:3306/logback?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf-8</url>
                <username>root</username>
                <password>root</password>
            </dataSource>
        </connectionSource>
    </appender>

    <root level="info">
        <appender-ref ref="mysql"/>
    </root>
</configuration>

第二种方式

使用注解

导入依赖:

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

控制台输出:

@Slf4j
public class Main {

    public static void main(String[] args) {
        log.info("Log message...");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值