From 2d0e676a77f0b4739eb4776b33ad010eb70c757f Mon Sep 17 00:00:00 2001 From: Pablo de la Torre Jamardo Date: Sat, 13 Sep 2025 12:28:41 +0200 Subject: [PATCH] feat(logging): add Log4j2 implementation for application logging --- application/pom.xml | 7 ++ bootstrap/pom.xml | 12 +++ domain/pom.xml | 5 + infrastructure/pom.xml | 97 ++++++++++++++++++ .../src/main/resources/log4j2.properties | 99 +++++++++++++++++++ 5 files changed, 220 insertions(+) create mode 100644 infrastructure/src/main/resources/log4j2.properties diff --git a/application/pom.xml b/application/pom.xml index 280351b..d4a0db7 100644 --- a/application/pom.xml +++ b/application/pom.xml @@ -16,5 +16,12 @@ jakarta.validation jakarta.validation-api + + + org.slf4j + slf4j-api + 2.0.13 + + \ No newline at end of file diff --git a/bootstrap/pom.xml b/bootstrap/pom.xml index 981dac1..53ab4c6 100644 --- a/bootstrap/pom.xml +++ b/bootstrap/pom.xml @@ -33,10 +33,22 @@ ${springdoc.version} + + org.slf4j + slf4j-api + 2.0.13 + + org.springframework.boot spring-boot-starter-actuator + + + org.springframework.boot + spring-boot-starter-logging + + diff --git a/domain/pom.xml b/domain/pom.xml index 03f98a0..5e99338 100644 --- a/domain/pom.xml +++ b/domain/pom.xml @@ -16,5 +16,10 @@ jakarta.validation jakarta.validation-api + + org.slf4j + slf4j-api + 2.0.13 + \ No newline at end of file diff --git a/infrastructure/pom.xml b/infrastructure/pom.xml index 11e20aa..12257c7 100644 --- a/infrastructure/pom.xml +++ b/infrastructure/pom.xml @@ -23,6 +23,22 @@ org.springframework.boot spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-logging + + + + + org.springframework.boot + spring-boot-starter-mail + + + org.springframework.boot + spring-boot-starter-logging + + org.springframework.boot @@ -39,6 +55,80 @@ 0.10.2 + + com.google.http-client + google-http-client-jackson2 + 1.43.0 + + + + + com.google.api-client + google-api-client + 1.35.2 + + + + com.google.oauth-client + google-oauth-client-jetty + 1.39.0 + + + + com.google.apis + google-api-services-gmail + v1-rev110-1.25.0 + + + + org.apache.httpcomponents + httpclient + 4.5.13 + + + commons-logging + commons-logging + + + + + + javax.mail + javax.mail-api + 1.6.2 + + + + com.sun.mail + jakarta.mail + 2.0.2 + + + + com.sun.activation + jakarta.activation + 2.0.1 + + + + org.apache.logging.log4j + log4j-core + 2.24.1 + + + + org.apache.logging.log4j + log4j-slf4j2-impl + 2.24.1 + + + + org.apache.logging.log4j + log4j-api + 2.24.1 + + + org.mapstruct @@ -52,4 +142,11 @@ true + + + maven_central + Maven Central + https://repo.maven.apache.org/maven2/ + + \ No newline at end of file diff --git a/infrastructure/src/main/resources/log4j2.properties b/infrastructure/src/main/resources/log4j2.properties new file mode 100644 index 0000000..e474e31 --- /dev/null +++ b/infrastructure/src/main/resources/log4j2.properties @@ -0,0 +1,99 @@ +# ========== Log4j2 Properties Configuration ========== +status = error +name = PropertiesConfig + +property.basePath = logs + +# ========== Appenders ========== + +# Console +appender.console.type = Console +appender.console.name = ConsoleAppender +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = [%d{yyyy-MM-dd HH:mm:ss}] [%t] %-5level %logger{36} - %msg%n + +# Rolling File INFO+ (DEBUG e INFO) +appender.info.type = RollingFile +appender.info.name = InfoFileAppender +appender.info.fileName = ${basePath}/info.log +appender.info.filePattern = ${basePath}/info-%d{yyyy-MM-dd}-%i.log.gz +appender.info.layout.type = PatternLayout +appender.info.layout.pattern = [%d{yyyy-MM-dd HH:mm:ss}] [%t] %-5level %logger{36} - %msg%n +appender.info.policies.type = Policies +appender.info.policies.time.type = TimeBasedTriggeringPolicy +appender.info.policies.time.interval = 1 +appender.info.policies.size.type = SizeBasedTriggeringPolicy +appender.info.policies.size.size = 10MB +appender.info.filter.threshold.type = ThresholdFilter +appender.info.filter.threshold.level = debug +appender.info.filter.threshold.onMatch = ACCEPT +appender.info.filter.threshold.onMismatch = DENY + +# Rolling File ERROR+ (ERROR y FATAL) +appender.error.type = RollingFile +appender.error.name = ErrorFileAppender +appender.error.fileName = ${basePath}/error.log +appender.error.filePattern = ${basePath}/error-%d{yyyy-MM-dd}-%i.log.gz +appender.error.layout.type = PatternLayout +appender.error.layout.pattern = [%d{yyyy-MM-dd HH:mm:ss}] [%t] %-5level %logger{36} - %msg%n +appender.error.policies.type = Policies +appender.error.policies.time.type = TimeBasedTriggeringPolicy +appender.error.policies.time.interval = 1 +appender.error.policies.size.type = SizeBasedTriggeringPolicy +appender.error.policies.size.size = 10MB +appender.error.filter.threshold.type = ThresholdFilter +appender.error.filter.threshold.level = error +appender.error.filter.threshold.onMatch = ACCEPT +appender.error.filter.threshold.onMismatch = DENY + +# Rolling File for Database logs (Hibernate / JDBC) +appender.db.type = RollingFile +appender.db.name = DBFileAppender +appender.db.fileName = ${basePath}/db.log +appender.db.filePattern = ${basePath}/db-%d{yyyy-MM-dd}-%i.log.gz +appender.db.layout.type = PatternLayout +appender.db.layout.pattern = [%d{yyyy-MM-dd HH:mm:ss}] [%t] %-5level %logger{36} - %msg%n +appender.db.policies.type = Policies +appender.db.policies.time.type = TimeBasedTriggeringPolicy +appender.db.policies.time.interval = 1 +appender.db.policies.size.type = SizeBasedTriggeringPolicy +appender.db.policies.size.size = 10MB + +# ========== Loggers ========== + +# App logs +logger.app.name = com.pablotj +logger.app.level = debug +logger.app.additivity = false +logger.app.appenderRefs = console, info, error +logger.app.appenderRef.console.ref = ConsoleAppender +logger.app.appenderRef.info.ref = InfoFileAppender +logger.app.appenderRef.error.ref = ErrorFileAppender + +# Hibernate SQL +logger.hibernate.name = org.hibernate.SQL +logger.hibernate.level = debug +logger.hibernate.additivity = false +logger.hibernate.appenderRefs = db +logger.hibernate.appenderRef.db.ref = DBFileAppender + +# Hibernate parameter binding +#logger.hibernate.type.name = org.hibernate.type.descriptor.sql.BasicBinder +#logger.hibernate.type.level = trace +#logger.hibernate.type.additivity = false +#logger.hibernate.type.appenderRefs = db +#logger.hibernate.type.appenderRef.db.ref = DBFileAppender + +# Spring JDBC Template logs +#logger.spring.sql.name = org.springframework.jdbc.core.JdbcTemplate +#logger.spring.sql.level = debug +#logger.spring.sql.additivity = false +#logger.spring.sql.appenderRefs = db +#logger.spring.sql.appenderRef.db.ref = DBFileAppender + +# ========== Root Logger ========== +rootLogger.level = info +rootLogger.appenderRefs = console, info, error +rootLogger.appenderRef.console.ref = ConsoleAppender +rootLogger.appenderRef.info.ref = InfoFileAppender +rootLogger.appenderRef.error.ref = ErrorFileAppender \ No newline at end of file