import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang.StringUtils;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
/**
*
*
* Created by zhaopx.
* Date: 2025/5/29
* Time: 14:50
* Vendor: exlive.cn
*
*
*
* @author zhaopx
*/
@Setter
@Getter
@Configuration
@ConfigurationProperties(prefix = "exbooter.access-log")
public class AccessLogProperties {
/**
* 文件,还是消息。file/jdbc/rabbitmq
*/
String persistType = "jdbc";
/**
* 文件相关配置
*/
Map file;
/**
* 数据库相关配置
*/
Map jdbc;
Map rabbitmq;
Map kafka;
public String getPersistType() {
return Optional.ofNullable(StringUtils.trimToNull(persistType)).orElse("jdbc");
}
public String getPath() {
return Optional.ofNullable(StringUtils.trimToNull((String) getFile().getOrDefault("path", "./logs"))).orElse("./logs");
}
public Map getFile() {
if(file == null) {
file = new HashMap<>();
}
return file;
}
public String getFilePrefix() {
return Optional.ofNullable(StringUtils.trimToNull((String) getFile().getOrDefault("filePrefix", "api-access."))).orElse("api-access.");
}
public String getFileSuffix() {
return Optional.ofNullable(StringUtils.trimToNull((String) getFile().getOrDefault("fileSuffix", ".log"))).orElse(".log");
}
/**
* 开启 round
* @return
*/
public boolean isRound() {
return Optional.ofNullable((Boolean) getFile().getOrDefault("round", false)).orElse(false);
}
/**
* 滚单位。second,minute,hour
*/
public String getRoundUnit() {
return Optional.ofNullable(StringUtils.trimToNull((String) getFile().getOrDefault("roundUnit", "minute"))).orElse("minute");
}
/**
* 滚动值,默认 1
*/
public int getRoundValue() {
return Optional.ofNullable((Integer) getFile().getOrDefault("roundValue", 1)).orElse(1);
}
/**
* 滚动大小,10M
*/
public int getRollSize() {
return Optional.ofNullable((Integer) getFile().getOrDefault("rollSize", 10 * 1024 * 1024)).orElse(10 * 1024 * 1024);
}
/**
* 滚动时间,60s
*/
public int getRollInterval() {
return Optional.ofNullable((Integer) getFile().getOrDefault("rollInterval", 60)).orElse(60);
}
public Map getJdbc() {
if(jdbc == null) {
jdbc = new HashMap<>();
}
return jdbc;
}
public Map getRabbitmq() {
if(rabbitmq == null) {
rabbitmq = new HashMap<>();
}
return rabbitmq;
}
public Map getKafka() {
if(kafka == null) {
kafka = new HashMap<>();
}
return kafka;
}
/**
* RabbitMQ 相关配置
*/
public String getHost() {
return Optional.ofNullable(StringUtils.trimToNull((String) getRabbitmq().getOrDefault("localhost", "localhost"))).orElse("localhost");
}
public int getPort() {
return Optional.ofNullable((Integer) getRabbitmq().getOrDefault("port", 5217)).orElse(5217);
}
public String getUsername() {
return StringUtils.trimToNull((String) getRabbitmq().get("username"));
}
public String getPassword() {
return StringUtils.trimToNull((String) getRabbitmq().get("password"));
}
public String getVirtualHost() {
return Optional.ofNullable(StringUtils.trimToNull((String) getRabbitmq().getOrDefault("virtualHost", "/"))).orElse("/");
}
public String getExchangeName() {
return StringUtils.trimToNull((String) getRabbitmq().get("exchangeName"));
}
public String getRoutingKey() {
return StringUtils.trimToNull((String) getRabbitmq().get("routingKey"));
}
public boolean getAutoDelete() {
return Optional.ofNullable((Boolean) getRabbitmq().getOrDefault("autoDelete", false)).orElse(false);
}
}