Wie Sie verhindern, dass spring boot von der Protokollierung in der angegebenen Datei und catalina.aus

Arbeite ich in einer spring-boot-Projekt (version 1.5.1) und die Verwendung von logback. Meine application.properties hat die folgenden log-Einstellungen:

logging.level.=info
logging.level.org.acme.myapp=info
logging.file=${catalina.home}/logs/AppLogFile.log

Wenn die Anwendung die Protokolle etwas, das geschrieben ist, an die angegebene AppLogFile.log und auch catalina.out:

==> AppLogFile.log <==
2017-04-13 13:37:33.102 DEBUG 4646 --- [http-nio-8080-exec-25] c.l.c.c.controller.IndexPage             : isAllowedToSeeContent: Homebase: MOCKBASE

==> catalina.out <==
2017-04-13 13:37:33.102 DEBUG 4646 --- [io-8080-exec-25] c.l.c.c.controller.IndexPage             : isAllowedToSeeContent: Homebase: MOCKBASE

==> AppLogFile.log <==
2017-04-13 13:37:33.108 DEBUG 4646 --- [http-nio-8080-exec-25] c.l.c.c.controller.MedlistService        : MedlistService::isControlDay 2017-04-13, true

==> catalina.out <==
2017-04-13 13:37:33.108 DEBUG 4646 --- [io-8080-exec-25] c.l.c.c.controller.MedlistService        : MedlistService::isControlDay 2017-04-13, true

Scheint dies additivity Problem. Ist es wirklich notwendig logback.xml wie bereits erwähnt, hier: howto-Konfiguration-logback-für-Protokollierung?
Oder gibt es einen direkteren Weg?


Update:

Selbst wenn ich der Empfehlung aus der howto und fügen Sie eine logback-spring.xml mein classpath:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <include resource="org/springframework/boot/logging/logback/defaults.xml" />
  <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}" />    
  <include resource="org/springframework/boot/logging/logback/file-appender.xml" />
  <root>
    <appender-ref ref="FILE" />
  </root>
</configuration>

Bekomme ich folgenden Fehler (massenhaft):

17:50:01.267 [localhost-startStop-1] DEBUG org.springframework.jndi.JndiPropertySource - JNDI lookup for name [LOGGING_patternLevel] threw NamingException with message: Name [LOGGING_patternLevel] is not bound in this Context. Unable to find [LOGGING_patternLevel].. Returning null.
17:50:01.267 [localhost-startStop-1] DEBUG org.springframework.jndi.JndiTemplate - Looking up JNDI object with name [java:comp/env/LOGGING_patternlevel]

Einstellung logging.pattern.console= auf einen leeren string, erscheint um den trick zu tun – ABER ist das wirklich die richtige Lösung?

InformationsquelleAutor morecore | 2017-04-13



2 Replies
  1. 0

    Macht Ihr tomcat conf/logging.properties die folgende Zeile enthalten?

    .handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
    

    Dies ist Teil der Standard-Paket. Entfernen Sie die ConsoleHandler Eintrag von es.

    • Ja, aber nur das entfernen der ConsoleHandler hat keinen Effekt. Ich habe versucht, alle 3 Kombinationen – handlers = 1catalina.org.apache.juli.AsyncFileHandler, ..., 4host-manager.org.apache.juli.AsyncFileHandler.handlers = 1catalina.org.apache.juli.AsyncFileHandler – – – grep -r isControlDay catalina.out: 18:05:29.640 ... isControlDay 2017-04-13, true MyAppLog.log: 18:05:29.640 ... isControlDay 2017-04-13, true — dies ist Zwar eine Empfehlung in der tomcat-Doku. – Aber ich würde es vorziehen, es zu ändern für meine app nur und nicht auf das ganze system.
    • Sie müssen neu starten, nachdem Sie dieses. Ihre app muss nicht schreiben, um catalina.aus. Tomcat-Rohre, alles gerichtet auf stdout in catalina.- Sie können entweder ändern Sie diese, oder stoppen Sie schreiben nach stdout (was können Sie tun, indem Sie Ihre eigene Aufzeichnung).
    • Vielen Dank für das feedback! Aber nur die änderung .handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler zu .handlers = 1catalina.org.apache.juli.AsyncFileHandler hat keine Wirkung. Ich habe versucht, es mit einer frisch entpackten tomcat (8.5.12) und eine einfache „hello world“ – Beispiel. Tomcat neu gestartet wurde. Protokoll wird gedruckt hello.log und catalina.out. Ich habe auch überprüft, dass tomcat die richtige properties-Datei. Es scheint, es fehlt noch etwas.
  2. 0

    Als Ziel tomcat ist NICHT unter meiner Kontrolle und meiner Anwendung ist nicht der einzige auf dem server, habe ich beschlossen, deaktivieren Sie die Konsole-logging Einstellung der logging.pattern.console= auf eine leere Zeichenfolge.


    Die Antwort von Olaf Kock, ich bin mir sicher, der ist auch gültig, siehe die Überlegungen für die Produktion und Nutzung Absatz – aber ich muss zugeben, dass ich gescheitert, es funktioniert – Deshalb kann ich es nicht testen 🙁

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.