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); } }