Ich baue einen Web-Service mit jax-rs und wollte einiges protokollieren, wenn URLs aufgerufen werden. Ich habe über log4j 2 herausgefunden und beschlossen, es zu benutzen. Ich weiß nicht, warum, aber es funktioniert, wenn ich ein paar Tests machenlog4j2 Schreiben in Datei beim Testen, nicht beim Deployment
Response response = target("user/v1/"+alfred.getPseudo()).request().get();
assertTrue(response.getStatus() < 300);
Dies wird die Log-String in Protokolle setzen/logs.log (Ich liebe logs). Wenn ich jedoch (mit glassfish 4.1.1) deploye, schreibt es kein einzelnes Zeichen in der Datei, wenn ich dieselbe URL anrufe.
Hier ist mein log4j2.xml
(befindet sich in src/main/resources):
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<File name="File" fileName="logs/logs.log">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS}[%t] %c{1} - %msg%n"/>
</File>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="File"/>
</Root>
</Loggers>
</Configuration>
Mein web.xml
ist leer:
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
</web-app>
Ich habe die lo4j-api und log4j-Kern, beide 2.5 , in meiner pom.xml.
Schließlich, hier ist der Code:
private final static Logger logger = LogManager.getLogger(MyClass.class);
, auf dem ich nenne nur logger.info(String)
und logger.error(String)
.
Was mache ich falsch, und was sollte ich tun, um Protokolle bei der Bereitstellung zu erstellen?
Danke.
EDIT: Vielleicht wird dies helfen. Ich hatte vorher
<File name="File" fileName="logs/logs.log" bufferedIO="false">
Als ich Prüfung, ich eine Warnung hatte „Hey, du bufferedIO auf false gesetzt, aber die Standardpuffergröße ist 8192, wtf“. Und diese Warnung wurde angezeigt, als ich die URLs während der realen Bereitstellung anrief. Ich denke, das bedeutet, dass meine Konfiguration auch bei der Bereitstellung erkannt wurde.
Danke für die Beantwortung. Unglücklicherweise habe ich die XML-Datei in 'WEB-INF/classes' abgelegt und den Kontextparameter, den Sie in' web gegeben haben, hinzugefügt.xml' hat es nicht gemacht. Es funktioniert nicht mehr mit Test (ich denke, das könnte normal sein), und fügen Sie immer noch keine Zeile in "logs.log" hinzu – Ghalnas