日志记录提交

This commit is contained in:
2026-08-05 14:20:04 +08:00
parent 264458920b
commit 06f7f9d2f2
83 changed files with 3256 additions and 27 deletions
@@ -0,0 +1,33 @@
package com.baiyue.common.audit;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.transaction.support.TransactionOperations;
/** 将审计事件先持久化到业务库 Outbox,核心业务不等待 MQ。 */
public class OutboxAuditSink implements AuditSink {
private static final Logger log = LoggerFactory.getLogger(OutboxAuditSink.class);
private final AuditOutboxRepository repository;
private final ObjectMapper json;
private final TransactionOperations transactions;
public OutboxAuditSink(AuditOutboxRepository repository, ObjectMapper json,
TransactionOperations transactions) {
this.repository = repository;
this.json = json;
this.transactions = transactions;
}
@Override
public void publish(AuditEvent event) {
try {
String payload = json.writeValueAsString(event);
transactions.executeWithoutResult(status -> repository.append(event, payload));
} catch (JsonProcessingException | RuntimeException exception) {
log.error("审计事件写入本地 Outbox 失败 eventId={} eventType={}",
event.eventId(), event.eventType(), exception);
}
}
}