Ich arbeite an einem Java EE-Anwendungsprojekt, das im Allgemeinen log4j (Version 1.2.x) in Modulen und .war
Kontexten verwendet.Wie kann ich die EAR-App log4j aktivieren, wenn ich TomEE 7.0.1 über log4j.xml anmelde?
Grundsätzlich ist das Modul Aufbau über Maven wie folgt:
| # app-bundle.ear
| - app-log4j-config.jar
| - src/main/resources/log4j.xml
| - app-backend-module.jar (ejb-module)
| - app-web-ui-module.war
| - app-web-service-module.war
Also ich habe nur genau eine log4j.xml
für die gesamte EAR App Bundle.
ein TomEE 7.0.x Anwendungsserverumgebung gegeben, muss ich wissen, welche Schritte nur notwendig sind, um die anwendungsspezifischen Protokollmeldungen log (wie über log4j.xml
konfiguriert), aber nicht die vom Anwendungsserver erzeugt Nachrichten.
z. Start- und Herunterfahrenachrichten sollten auf catalina.out
gehen, aber alle Protokollausgaben von verschiedenen Backend- oder Webmodulen (siehe oben) sollten gedruckt/protokolliert werden, wie von meiner log4j-Konfiguration angegeben.
Meine Fragen sind:
Habe ich die Standard
conf/system.properties
des TomEE in irgendeiner Weise anpassen müssen? Wenn ja, was genau muss hinzugefügt/bearbeitet werden?Wo ich
log4j-<version>.jar
setzen Sie: in (a)lib
des TomEE oder (b) den apps Ordner meiner EAR Bündel withing?
Was ich bisher versucht:
Sowohl
log4j.xml
undlog4j-<version>.jar
inlib
von TomEE Installation -> kein ErfolgSowohl
app-log4j-config.jar
undlog4j-<version>.jar
mit der EAR gebündelt -> nein ErfolgExtrahiert
log4j.xml
imapps/project
zusammen mitlog4j-<version>.jar
gebündelt -> kein Erfolg
Jede Hilfe wäre sehr zu begrüßen.
EDIT: Ich verwende ein TomEE 7.0.1 in der PLUS-Variante.
EDIT-2: Die ear
wird über Maven erzeugt wird, wie folgt:
<dependencies>
<dependency>
<groupId>de.myapp</groupId>
<artifactId>app-log4j-config</artifactId>
<version>1.0-SNAPSHOT</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>de.myapp</groupId>
<artifactId>app-backend-module</artifactId>
<version>1.0-SNAPSHOT</version>
<type>ejb</type>
</dependency>
<dependency>
<groupId>de.myapp</groupId>
<artifactId>app-web-ui-module</artifactId>
<version>1.0-SNAPSHOT</version>
<type>war</type>
</dependency>
<dependency>
<groupId>de.myapp</groupId>
<artifactId>app-web-service-module</artifactId>
<version>1.0-SNAPSHOT</version>
<type>war</type>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
<type>jar</type>
<exclusions>
<!-- This dependency will be provided globally in the TomEE deployment -->
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
<type>jar</type>
</dependency>
</dependencies>
<build>
<finalName>app-bundle</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.10.1</version>
<!-- configuring the ear plugin -->
<configuration>
<modules>
<webModule>
<groupId>de.myapp</groupId>
<artifactId>app-web-service-module</artifactId>
</webModule>
<webModule>
<groupId>de.myapp</groupId>
<artifactId>app-web-ui-module</artifactId>
</webModule>
<ejbModule>
<groupId>de.myapp</groupId>
<artifactId>app-backend-module</artifactId>
</ejbModule>
<jarModule>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<includeInApplicationXml>true</includeInApplicationXml>
</jarModule>
<jarModule>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<includeInApplicationXml>true</includeInApplicationXml>
</jarModule>
</modules>
</configuration>
</plugin>
</plugins>
</build>
Die log4j.xml
ist dies:
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{ISO8601} %-5p [%t] %c{1}(%L): %m%n"/>
</layout>
</appender>
<appender name="DEBUGFILE" class="org.apache.log4j.DailyRollingFileAppender">
<param name="datePattern" value="'.'yyyy-MM-dd"/>
<param name="file" value="logs/app-bundle-DEBUG.log"/>
<param name="Append" value="true"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} %-5p [%t] %c{1}(%L): %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="LevelToMatch" value="debug"/>
</filter>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="LevelToMatch" value="info"/>
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
</appender>
<appender name="INFOFILE" class="org.apache.log4j.DailyRollingFileAppender">
<param name="datePattern" value="'.'yyyy-MM-dd"/>
<param name="file" value="logs/app-bundle-INFO.log"/>
<param name="Append" value="true"/>
<param name="Threshold" value="INFO"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} %-5p [%t] %c{1}(%L): %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="LevelToMatch" value="info"/>
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
</appender>
<appender name="WARNFILE" class="org.apache.log4j.DailyRollingFileAppender">
<param name="datePattern" value="'.'yyyy-MM-dd"/>
<param name="file" value="logs/app-bundle-WARN.log"/>
<param name="Append" value="true"/>
<param name="Threshold" value="WARN"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} %-5p [%t] %c{1}(%L): %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="LevelToMatch" value="warn"/>
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
</appender>
<appender name="ERRORFILE" class="org.apache.log4j.DailyRollingFileAppender">
<param name="datePattern" value="'.'yyyy-MM-dd"/>
<param name="file" value="logs/app-bundle-ERROR.log"/>
<param name="Append" value="true"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} %-5p [%t] %c{1}(%L): %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="LevelToMatch" value="error"/>
</filter>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="LevelToMatch" value="fatal"/>
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
</appender>
<logger name="de.myapp">
<level value="INFO"/>
</logger>
<root>
<level value="WARN"/>
<!--
<appender-ref ref="CONSOLE"/>
-->
<appender-ref ref="ERRORFILE"/>
<appender-ref ref="WARNFILE"/>
<appender-ref ref="INFOFILE"/>
<appender-ref ref="DEBUGFILE"/>
</root>
EDIT-3: Ich versuche, eine dünne WAR-Datei über Maven über das erwähnte lib
Verzeichnis zu erstellen:
<defaultLibBundleDir>lib/</defaultLibBundleDir>
<skinnyWars>true</skinnyWars>
Dies gilt auch nicht gelingen.
EDIT-4: Ich habe die sl4j-api.jar
an das EAR-Bündel über
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
<type>jar</type>
</dependency>
<jarModule>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<includeInApplicationXml>true</includeInApplicationXml>
</jarModule>
hinzugefügt On TomEE die Dateien beim Start wie im logs
Verzeichnis erwartet erstellt. Log-Ausgabe geht jedoch immer noch in catalina.out
und nicht in den angegebenen Dateien.
EDIT-5: Ich habe das Projekt nicht korrekt über Maven neu erstellt. Schließlich die sl4j-api.jar
zu der EAR Bündel Modul ist die Lösung für das Problem!
Ich habe gerade die Maven-Konfiguration hinzugefügt, die verwendet wird, um das EAR zu bündeln. In meinem Verständnis wird das log4j * Zeug in den richtigen Abschnitt gebracht? Wir sehen keine Art von Protokollausgabe in den spezifischen Zielen ... stattdessen wird alles in catalina geschrieben.out – rzo
Wenn Sie erwarten, slf4j zu verwenden, dann müssen Sie * im Ohr * slf4h-api bereitstellen, sonst Sie am Ende mit Container eins mit seiner Standardbindung (slf4j-jdk14), die JULi (conf/logging.properties) –
verwendet @rmannibucau könnten Sie Ihre Antwort mit den Informationen aus Ihrem letzten Kommentar bearbeiten? das scheint wertvolle/wichtige Information. – MWiesner