使用logback日志管理工具,选择日志保存到数据库

本文介绍了Logback在业务场景中的关键应用,包括业务逻辑日志、异常处理、性能监控、安全审计和调试。同时涵盖了如何配置Logback、创建数据库记录实体以及日志脱敏的实践方法。
摘要由CSDN通过智能技术生成

业务场景


业务逻辑中:在业务逻辑中,你可以使用 Logback 记录与业务相关的信息、警告和错误。例如,在订单处理系统中,你可以使用日志记录跟踪订单的处理状态、记录异常情况,以及记录用户操作等。这有助于排查问题、监视业务流程和追踪应用程序行为。


异常处理中:在应用程序中的异常处理代码中,你可以使用 Logback 记录异常详细信息,包括异常堆栈跟踪。这有助于开发人员了解异常原因以及如何修复它们。


性能监控中:你可以使用 Logback 记录应用程序的性能数据,如响应时间、请求处理时间等。这些信息有助于监视应用程序的性能,以及识别可能的性能问题。


安全审计中:在涉及安全性的应用程序中,Logback 可用于记录用户登录、权限更改和其他关键操作。这些日志可用于审计和合规性检查。


调试中:在开发和测试阶段,Logback 是调试代码的有力工具。你可以在代码中插入调试信息,以便在需要时启用它们,并在调试时查看日志输出。


集成和监控中:在应用程序中,Logback 可以与监控和集成工具集成,以实时监视和分析日志数据。这有助于运维人员追踪应用程序的状态并及时采取行动。


异常处理和错误日志中:在应用程序出现错误或异常时,Logback 可以用于记录错误日志,包括错误消息、异常堆栈跟踪和错误码。这些错误日志对于故障排除和问题定位非常有帮助。


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

根据日志的不同用途,可以有不同的记录级别,如 DEBUG、INFO、WARN、ERROR 等。

业务过程

选择需要保存的日志信息

一、参考链接,设置logback.xml

logback日志管理工具超详细使用方法及示例_logback 日志示例-CSDN博客

添加配置

//class是自定义类MyConsoleAppender的实际地址
<appender name="dbAppender" class="com.xx.xx.xx.MyConsoleAppender">
    <encoder>
        <pattern>日志格式</pattern>
        <charset>UTF-8</charset>
    </encoder>
</appender>

<root level="info">
    <appender-ref ref="dbAppender"/>
</root>

二、创建实体类和数据库连接

@TableName
@Data
@NoArgsConstructor
@AllArgsConstructor
public class OperationLog implements Serializable {

@TableId(value = "id", type = IdType.AUTO)
private Long id;

private String level;


private String taskNo;


private String exceptionMessage;

@TabelField(fill = FieldFill.INSERT)
private String createdBy;

@TabelField(fill = FieldFill.INSERT)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date createdTime;

@TabelField(fill = FieldFill.INSERT_UPDATE)
private String updatedBy;

@TabelField(fill = FieldFill.INSERT_UPDATE)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date updatedBy;
}

三、选择需要的日志信息,放入BlockingQueue队列中

public class DataContext {
    public static BlockingQueue<OperationLog> operationLogs = new LinkedBlockingQueue<>();

public class MyConsoleAppender extends ConsoleAppender<ILoggingEvent>{
    @Override
    protected void append(ILoggingEvent loggingEvent) {
        try{
           if (null != loggingEvent.getArgumentArray() && (loggingEvent.getArgumentArray()[0]) instanceof OperationLog) {
           OperationLog operationLog = ((OperationLog)loggingEvent.getArgumentArray()[0]);
           //设置或者修改参数,然后放入队列等待消费
           DataContext.operationLogs.add(operationLog);
           }
        } catch (Exception ex) {
        }
    }

}

四、设置定时任务获取日志消费

@EnableScheduling
@Configuration
public class LogTask {
    @Scheduled(fixedDelay = 5 * 1000)
    public void log() {
        try {
            OperationLog log;
            while (null != (log = DataContext.operationLogs.poll())) {
                //脱敏处理,保存日志到数据库
            }
        } catch (Exception ex) {

        }
    }
}

日志里的敏感信息还在打明文?3 种日志脱敏方案任你选-CSDN博客

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用logback日志数据写入mysql数据库的示例代码: 1. 添加依赖 在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.25</version> </dependency> ``` 2. 配置logback.xml文件 在src/main/resources目录下创建logback.xml文件,并添加以下配置: ``` <configuration> <appender name="DB" class="ch.qos.logback.classic.db.DBAppender"> <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource"> <driverClass>com.mysql.cj.jdbc.Driver</driverClass> <url>jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai</url> <user>root</user> <password>123456</password> </connectionSource> <sqlDialect class="ch.qos.logback.core.db.dialect.MySQLDialect"/> <insertHeaders>true</insertHeaders> <bufferSize>1</bufferSize> <tableName>log</tableName> <columnMapping> <column name="timestamp" isTimestamp="true"/> <column name="level" pattern="%level"/> <column name="logger" pattern="%logger"/> <column name="message" pattern="%message"/> </columnMapping> </appender> <root level="info"> <appender-ref ref="DB"/> </root> </configuration> ``` 其中,url、user和password需要根据实际情况修改。 3. 编写测试代码 在Spring Boot应用程序中,可以使用LoggerFactory获取Logger实例,并使用Logger实例记录日志。例如: ``` @RestController public class TestController { private static final Logger logger = LoggerFactory.getLogger(TestController.class); @GetMapping("/test") public String test() { logger.info("This is a test log message."); return "success"; } } ``` 4. 运行测试 启动Spring Boot应用程序,并访问http://localhost:8080/test,可以在mysql数据库中查看到日志数据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值