feat(logging): add Log4j2 implementation for application logging

This commit is contained in:
Pablo de la Torre Jamardo 2025-09-13 12:28:41 +02:00
parent 682d801836
commit 2d0e676a77
5 changed files with 220 additions and 0 deletions

View File

@ -16,5 +16,12 @@
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.13</version>
</dependency>
</dependencies>
</project>

View File

@ -33,10 +33,22 @@
<version>${springdoc.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.13</version>
</dependency>
<!-- Actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Test -->

View File

@ -16,5 +16,10 @@
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.13</version>
</dependency>
</dependencies>
</project>

View File

@ -23,6 +23,22 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
@ -39,6 +55,80 @@
<version>0.10.2</version>
</dependency>
<dependency>
<groupId>com.google.http-client</groupId>
<artifactId>google-http-client-jackson2</artifactId>
<version>1.43.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.api-client/google-api-client -->
<dependency>
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client</artifactId>
<version>1.35.2</version>
</dependency>
<dependency>
<groupId>com.google.oauth-client</groupId>
<artifactId>google-oauth-client-jetty</artifactId>
<version>1.39.0</version>
</dependency>
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-gmail</artifactId>
<version>v1-rev110-1.25.0</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>jakarta.mail</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>com.sun.activation</groupId>
<artifactId>jakarta.activation</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.24.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
<version>2.24.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.24.1</version>
</dependency>
<!-- MapStruct -->
<dependency>
<groupId>org.mapstruct</groupId>
@ -52,4 +142,11 @@
<optional>true</optional>
</dependency>
</dependencies>
<repositories>
<repository>
<id>maven_central</id>
<name>Maven Central</name>
<url>https://repo.maven.apache.org/maven2/</url>
</repository>
</repositories>
</project>

View File

@ -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