PROBLEMA Configurare Log4j2 in una web application

Tommolo91

Nuovo Utente
109
5
CPU
intel i5-3570k 3.40ghz
Dissipatore
Cooler Master hyper 412s
Scheda Madre
Asrock z77 extreme 3
HDD
Samunsg 840 pro 128gb
RAM
Corsair vengeance blue low profile 4X2gb
GPU
Asus Nvidia gtx 660 ti 2gb ddr5
Monitor
samsung TA23pollici led
PSU
XFX 650w 80bronze plus
Case
CM 690 II advanced
Net
FFTC 200Mb (180 effettivi)
OS
WIN10 64bit professional
Ciao a tutti!

Ho finito di scrivere il codice della mia SpringBoot app basata su una repository Gradle tramite l'ide intellij.

Ho deciso quindi di tirare su un tomcat8 su un determinato server aziendale , di creare il contesto di continuous integration tramite jenkins e di provare l'app nel nuovo ambiente di test.

Sto riscontrando diversi problemi a far funzionare log4j2, logging framework che nelle prove in locale funzionava benissimo.

Il problema e' il seguente:
log4j2 viene importato correttamente e sembra che riesca pure a trovare la posizione del relativo file log4j2.xml di configurazione dove sono situati gli appender che direzionano ai file ove scrivere i logs.

Quando lancio l'applicazione sul tomcat, tutto funziona correttamente , e nella relativa cartella logs vengono pure creati i file.

Il problema e' che da quel momento in poi sembra che log4j2 non scriva mai i messaggi di log nei files, cosa che in locale funzionava benissimo.

Questa e' la struttura del progetto prima di essere impacchettata nel war necessario per il deploy

base
+---logs
+---AuthorizationService
|
+----src -> main ---> java ---> com.project -> (classes)
|
+-> resources
|
+---->application.properties & log4j2.xml


+---ResourceService
|
+----src -> main ---> java ---> com.project -> (classes)
|
+-> resources
|
+---->application.properties & log4j2.xml

Mentre questo e' il file di configurazione presente in entrambi i moduli come potete vedere

Codice:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="60" status="WARN">
<Properties>
    <Property name="logsRoot">${sys:catalina.home}/logs</Property>
</Properties>

<Appenders>

    <Console name="STDOUT" target="SYSTEM_OUT">
        <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
    </Console>

    <File name="LogFileAll" fileName="${logsRoot}/AuthorizationLogsAll.log" immediateFlush="true">
        <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>

    </File>

    <File name="LogFileError" fileName="${logsRoot}/AuthorizationLogsError.log" immediateFlush="true">
        <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>

    </File>

    <!--
    <RollingFile name="LOGFILEALL" fileName="${logsRoot}/application.log" filePattern="${logsRoot}/application.log">
        <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>

        <Policies>
            <sizeBasedTriggeringPolicy size="10 MB" />
        </Policies>

        <DefaultRolloverStrategy min="1" max="4" />

    </RollingFile>
    -->
</Appenders>

<Loggers>

    <Root level="info">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="LogFileAll"/>
    </Root>

    <logger name="com.pcsystem" level="info" additivity="true">

        <appender-ref ref="LogFileError" level="warn"/>
        <!-- ogni log message marcato con PCSYSTEM_CONSOLE sara' inserito nella console
        <appender-ref ref="STDOUT">
            <MarkerFilter marker="PCSYSTEM_CONSOLE" onMatch="NEUTRAL" onMismatch="DENY" />
        </appender-ref>
        -->
    </logger>

    <!-- opzioni per i loggers del contesto apache tomcat
    <logger name="org.apache" level="info" additivity="true">
        <appender-ref ref="LogFileAll" />
    </logger>
    -->
</Loggers>


Grazie alla variabile ${sys:catalina.home} che specifica la home del progetto nella web app pensavo di aver risolto il problema, ma a quanto pare il file viene comunque creato con i relativi log di startup, ma i log conseguenti non vengono inseriti.

Ho paura che il problema sia inerente al cambio di struttura postumo dovuto al build di gradle, ma a quanto leggo sul sito di log4j2 il framework dovrebbe essere in grado comunque di leggere la configurazione, e di errori a tempo di startup dell'app non ne vedo ( inerenti alla config di log4j2 intendo ).

Avete qualche idea? Grazie in anticipo.
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!