日志记录提交
This commit is contained in:
+29
-2
@@ -3,10 +3,17 @@ package com.baiyue.common.audit;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.beans.factory.ObjectProvider;
|
||||
import org.springframework.web.client.RestClient;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
import org.springframework.transaction.TransactionDefinition;
|
||||
import org.springframework.transaction.support.TransactionTemplate;
|
||||
|
||||
/**
|
||||
* 业务审计自动配置,按配置创建脱敏器、审计输出端和审计切面。
|
||||
@@ -15,9 +22,29 @@ import org.springframework.web.client.RestClient;
|
||||
@EnableConfigurationProperties(AuditProperties.class)
|
||||
@ConditionalOnProperty(prefix = "baiyue.audit", name = "enabled", havingValue = "true", matchIfMissing = true)
|
||||
public class BaiyueAuditAutoConfiguration {
|
||||
@Bean @ConditionalOnMissingBean AuditSink auditSink(RestClient.Builder builder, AuditProperties p) {
|
||||
return p.getEndpoint() == null || p.getEndpoint().isBlank() ? new LoggingAuditSink() : new HttpAuditSink(builder, p.getEndpoint());
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
AuditSink auditSink(RestClient.Builder builder, AuditProperties p, ObjectMapper mapper,
|
||||
ObjectProvider<AuditOutboxRepository> outbox,
|
||||
ObjectProvider<PlatformTransactionManager> transactionManagers,
|
||||
@Value("${baiyue.security.internal-service-token:}") String internalServiceToken) {
|
||||
AuditOutboxRepository repository = outbox.getIfAvailable();
|
||||
PlatformTransactionManager transactionManager = transactionManagers.getIfAvailable();
|
||||
if (p.getOutbox().isEnabled() && p.getOutbox().isPublisherEnabled()
|
||||
&& repository != null && transactionManager != null) {
|
||||
TransactionTemplate transactions = new TransactionTemplate(transactionManager);
|
||||
transactions.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
|
||||
return new OutboxAuditSink(repository, mapper, transactions);
|
||||
}
|
||||
return p.getEndpoint() == null || p.getEndpoint().isBlank()
|
||||
? new LoggingAuditSink()
|
||||
: new HttpAuditSink(builder, p.getEndpoint(), internalServiceToken);
|
||||
}
|
||||
@Bean
|
||||
@ConditionalOnBean(JdbcTemplate.class)
|
||||
@ConditionalOnProperty(prefix = "baiyue.audit.outbox", name = "enabled", havingValue = "true")
|
||||
AuditOutboxRepository auditOutboxRepository() { return new AuditOutboxRepository(); }
|
||||
|
||||
@Bean SensitiveDataSanitizer sensitiveDataSanitizer(ObjectMapper mapper, AuditProperties p) { return new SensitiveDataSanitizer(mapper, p.getMaxPayloadLength()); }
|
||||
@Bean BusinessAuditAspect businessAuditAspect() { return new BusinessAuditAspect(); }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user