Skip to content

Commit

Permalink
fix: logback configuration to save logs into file system (#77)
Browse files Browse the repository at this point in the history
* removed gc log and added Europe/Rome timezone

* fix: logging into file
  • Loading branch information
diegolagospagopa authored Jan 8, 2025
1 parent 863b84f commit dc74d70
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 26 deletions.
17 changes: 13 additions & 4 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,14 @@ RUN apk add --no-cache \
curl \
tzdata \
&& addgroup -S javauser \
&& adduser -S javauser -G javauser
&& adduser -S javauser -G javauser \
# Set system timezone
&& cp /usr/share/zoneinfo/Europe/Rome /etc/localtime \
&& echo "Europe/Rome" > /etc/timezone

# Create log directory and set permissions
RUN mkdir -p /app/logs && \
chown -R javauser:javauser /app/logs

# Copy application bundle
COPY --from=builder /build/target/*.jar app.jar
Expand All @@ -31,17 +38,19 @@ USER javauser
ENV JAVA_TOOL_OPTIONS="-XX:MaxRAMPercentage=75.0 \
-XX:InitialRAMPercentage=50.0 \
-XX:+UseG1GC \
-Xlog:gc*:/app/gc.log \
-Djava.security.egd=file:/dev/./urandom \
-Duser.timezone=UTC"
-Duser.timezone=Europe/Rome"

# Application Insights configuration
ENV APPLICATIONINSIGHTS_CONNECTION_STRING=""
ENV APPLICATIONINSIGHTS_ROLE_NAME="devops-java-springboot-color"

# Add volume for logs
VOLUME /app/logs

# Configure container
EXPOSE 8080
HEALTHCHECK --interval=30s --timeout=3s --start-period=30s --retries=3 \
CMD curl -f http://localhost:8080/actuator/health || exit 1

ENTRYPOINT ["java", "-javaagent:/app/applicationinsights-agent.jar", "-jar", "/app/app.jar"]
ENTRYPOINT ["java", "-javaagent:/app/applicationinsights-agent.jar", "-jar", "/app/app.jar"]
16 changes: 13 additions & 3 deletions docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -1,13 +1,23 @@
version: "3.8"
services:
devops-java-springboot-color:
# image: "ghcr.io/pagopa/devops-java-springboot-color:snapshot-upgrade-java-21"
build:
dockerfile: ./Dockerfile
context: .
container_name: devops-java-springboot-color
restart: always
# environment:
# - MY_APP_COLOR=red
ports:
- "8080:8080"
volumes:
- ${PWD}/logs:/app/logs
environment:
- LOGGING_LEVEL_ROOT=INFO
- LOGGING_LEVEL_IT_PAGOPA_DEVOPS=DEBUG
- LOGGING_LEVEL_ORG_SPRINGFRAMEWORK=INFO
- MY_APP_COLOR=red
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/actuator/health"]
interval: 30s
timeout: 3s
retries: 3
start_period: 30s
5 changes: 3 additions & 2 deletions src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@ management:
logging:
level:
root: INFO
org.springframework: DEBUG
org.springframework: INFO
it.pagopa.devops: DEBUG
file:
name: ${java.io.tmpdir}/application.log
name: /app/logs/application.log
path: /app/logs
55 changes: 38 additions & 17 deletions src/main/resources/logback-spring.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,52 +2,73 @@
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>

<springProperty scope="context" name="appName"
source="spring.application.name"/>
<springProperty scope="context" name="appName" source="spring.application.name"/>

<property name="CONSOLE_LOG_PATTERN"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} [${appName:-}] [%X{userId:-}] [%X{traceId:-}] %-5level [%15.15t] [%-40.40logger{39}] - %msg%n"/>
<property name="AUDIT_LOG_PATTERN"
value="%msg"/>
<property name="AUDIT_LOG_PATTERN" value="%msg"/>
<property name="LOGS" value="${user.dir}/logs" />

<appender name="STDOUT"
class="ch.qos.logback.core.ConsoleAppender">
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>

<appender name="SYNC_AUDIT"
class="ch.qos.logback.core.ConsoleAppender">
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<appender name="SYNC_AUDIT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%msg%n</pattern>
</encoder>
</appender>

<appender name="AUDIT"
class="ch.qos.logback.classic.AsyncAppender">
<appender name="AUDIT" class="ch.qos.logback.classic.AsyncAppender">
<neverBlock>true</neverBlock>
<queueSize>20000</queueSize>
<discardingThreshold>0</discardingThreshold>
<appender-ref ref="SYNC_AUDIT"/>
</appender>

<appender name="ASYNC_STDOUT"
class="ch.qos.logback.classic.AsyncAppender">
<appender name="ASYNC_STDOUT" class="ch.qos.logback.classic.AsyncAppender">
<neverBlock>true</neverBlock>
<queueSize>20000</queueSize>
<discardingThreshold>0</discardingThreshold>
<appender-ref ref="STDOUT"/>
</appender>

<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{ISO8601} %highlight(%-5level) [%blue(%t)] %yellow(%C{1}): %msg%n%throwable</Pattern>
</layout>
</appender>

<appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGS}/application.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d{ISO8601} %-5level [%t] %C{1}: %msg%n%throwable</Pattern>
</encoder>

<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- Daily rollover with size limit -->
<fileNamePattern>${LOGS}/archived/application-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>7</maxHistory>
<totalSizeCap>100MB</totalSizeCap>
</rollingPolicy>
</appender>

<logger name="AUDIT" additivity="false">
<appender-ref ref="AUDIT"/>
</logger>

<root level="INFO">
<appender-ref ref="ASYNC_STDOUT"/>
<appender-ref ref="Console" />
<appender-ref ref="RollingFile" />
</root>

</configuration>
<logger name="it.pagopa.devops" level="DEBUG" additivity="false">
<appender-ref ref="Console" />
<appender-ref ref="RollingFile" />
</logger>

</configuration>

0 comments on commit dc74d70

Please sign in to comment.