97 lines
5.8 KiB
Java
97 lines
5.8 KiB
Java
package com.kamco.cd.kamcoback.config;
|
|
|
|
import com.zaxxer.hikari.HikariDataSource;
|
|
import javax.sql.DataSource;
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.boot.context.event.ApplicationReadyEvent;
|
|
import org.springframework.context.event.EventListener;
|
|
import org.springframework.core.env.Environment;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
@Slf4j
|
|
@Component
|
|
@RequiredArgsConstructor
|
|
public class StartupLogger {
|
|
|
|
private final Environment environment;
|
|
private final DataSource dataSource;
|
|
|
|
@EventListener(ApplicationReadyEvent.class)
|
|
public void logStartupInfo() {
|
|
String[] activeProfiles = environment.getActiveProfiles();
|
|
String profileInfo = activeProfiles.length > 0 ? String.join(", ", activeProfiles) : "default";
|
|
|
|
// Database connection information
|
|
String dbUrl = environment.getProperty("spring.datasource.url");
|
|
String dbUsername = environment.getProperty("spring.datasource.username");
|
|
String dbDriver = environment.getProperty("spring.datasource.driver-class-name");
|
|
|
|
// HikariCP pool settings
|
|
String poolInfo = "";
|
|
if (dataSource instanceof HikariDataSource hikariDs) {
|
|
poolInfo =
|
|
String.format(
|
|
"""
|
|
│ Pool Size : min=%d, max=%d
|
|
│ Connection Timeout: %dms
|
|
│ Idle Timeout : %dms
|
|
│ Max Lifetime : %dms""",
|
|
hikariDs.getMinimumIdle(),
|
|
hikariDs.getMaximumPoolSize(),
|
|
hikariDs.getConnectionTimeout(),
|
|
hikariDs.getIdleTimeout(),
|
|
hikariDs.getMaxLifetime());
|
|
}
|
|
|
|
// JPA/Hibernate settings
|
|
String showSql = environment.getProperty("spring.jpa.show-sql", "false");
|
|
String ddlAuto = environment.getProperty("spring.jpa.hibernate.ddl-auto", "none");
|
|
String batchSize =
|
|
environment.getProperty("spring.jpa.properties.hibernate.jdbc.batch_size", "N/A");
|
|
String batchFetchSize =
|
|
environment.getProperty("spring.jpa.properties.hibernate.default_batch_fetch_size", "N/A");
|
|
|
|
String startupMessage =
|
|
String.format(
|
|
"""
|
|
|
|
╔════════════════════════════════════════════════════════════════════════════════╗
|
|
║ 🚀 APPLICATION STARTUP INFORMATION ║
|
|
╠════════════════════════════════════════════════════════════════════════════════╣
|
|
║ PROFILE CONFIGURATION ║
|
|
╠────────────────────────────────────────────────────────────────────────────────╣
|
|
│ Active Profile(s): %s
|
|
╠════════════════════════════════════════════════════════════════════════════════╣
|
|
║ DATABASE CONFIGURATION ║
|
|
╠────────────────────────────────────────────────────────────────────────────────╣
|
|
│ Database URL : %s
|
|
│ Username : %s
|
|
│ Driver : %s
|
|
╠════════════════════════════════════════════════════════════════════════════════╣
|
|
║ HIKARICP CONNECTION POOL ║
|
|
╠────────────────────────────────────────────────────────────────────────────────╣
|
|
%s
|
|
╠════════════════════════════════════════════════════════════════════════════════╣
|
|
║ JPA/HIBERNATE CONFIGURATION ║
|
|
╠────────────────────────────────────────────────────────────────────────────────╣
|
|
│ Show SQL : %s
|
|
│ DDL Auto : %s
|
|
│ JDBC Batch Size : %s
|
|
│ Fetch Batch Size : %s
|
|
╚════════════════════════════════════════════════════════════════════════════════╝
|
|
""",
|
|
profileInfo,
|
|
dbUrl != null ? dbUrl : "N/A",
|
|
dbUsername != null ? dbUsername : "N/A",
|
|
dbDriver != null ? dbDriver : "PostgreSQL JDBC Driver (auto-detected)",
|
|
poolInfo,
|
|
showSql,
|
|
ddlAuto,
|
|
batchSize,
|
|
batchFetchSize);
|
|
|
|
log.info(startupMessage);
|
|
}
|
|
}
|