SpringBoot mit LogBack erstellen LOG_PATH_IS_UNDEFINED Ordner
Ich bin mit SpringBoot mit LogBack und unter den unten angegebenen Konfiguration in meiner yml Datei:
logging:
path: C:/var/log/pincode
Die Protokollierung.Pfad Frühling Environment-Variable übertragen wird, um die LOG_PATH-Umgebungsvariable und die log-Datei ist an der richtigen Stelle, aber es gibt auch ein Verzeichnis namens LOG_PATH_IS_UNDEFINED erstellt im root-Verzeichnis meines Projektes.
Dies scheint zu sein, verursacht durch die verschiedenen Phasen verwendet SpringBoot zu konfigurieren LogBack mit seiner Umwelt-Variablen.
17:29:21,325 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
17:29:21,337 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - Will use the pattern LOG_PATH_IS_UNDEFINED/catalina.out.%d{yyyy-MM-dd} for the active file
17:29:21,340 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'yyyy-MM-dd' from file name pattern 'LOG_PATH_IS_UNDEFINED/catalina.out.%d{yyyy-MM-dd}'.
17:29:21,340 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll-over at midnight.
17:29:21,343 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Mon Aug 11 17:24:07 BRT 2014
17:29:21,346 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[serverConsole] - Active log file name: LOG_PATH_IS_UNDEFINED/catalina.out
17:29:21,346 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[serverConsole] - File property is set to [LOG_PATH_IS_UNDEFINED/catalina.out]
...
17:29:21,358 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
Und dann nach, dass Sie beginnen, die Konfiguration logback wieder, aber dieses mal mit dem Weg, den ich eingestellt:
17:29:21,672 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
17:29:21,673 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - No compression will be used
17:29:21,673 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - Will use the pattern C:/var/log/pincode//catalina.out.%d{yyyy-MM-dd} for the active file
17:29:21,674 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'yyyy-MM-dd' from file name pattern 'C:/var/log/pincode//catalina.out.%d{yyyy-MM-dd}'.
17:29:21,674 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll-over at midnight.
17:29:21,674 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Mon Aug 11 17:29:21 BRT 2014
17:29:21,674 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[serverConsole] - Active log file name: C:/var/log/pincode//catalina.out
17:29:21,674 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[serverConsole] - File property is set to [C:/var/log/pincode//catalina.out]
...
17:29:21,685 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
Meine logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
<include resource="org/springframework/boot/logging/logback/basic.xml" />
<property name="FILE_LOG_PATTERN"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%t] --- %-40.40logger{39} : %m%n%wex" />
<appender name="serverConsole"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<Append>true</Append>
<File>${LOG_PATH}/catalina.out</File>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/catalina.out.%d{yyyy-MM-dd}
</fileNamePattern>
<maxHistory>15</maxHistory>
</rollingPolicy>
</appender>
<!-- Plain Text Rolling Appender -->
<appender name="server"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<Append>true</Append>
<File>${LOG_PATH}/pincode.log</File>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/pincode.log.%d{yyyy-MM-dd}
</fileNamePattern>
<maxHistory>15</maxHistory>
</rollingPolicy>
</appender>
<!-- Plain Text Rolling Appender -->
<appender name="server-error"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<Append>true</Append>
<File>${LOG_PATH}/pincode-error.log</File>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/pincode-error.log.%d{yyyy-MM-dd}
</fileNamePattern>
<maxHistory>15</maxHistory>
</rollingPolicy>
</appender>
<logger name="com.app" level="INFO">
<appender-ref ref="server" />
<appender-ref ref="server-error" />
</logger>
<root level="INFO">
<appender-ref ref="serverConsole" />
</root>
Wenn ich mein entfernen logback.xml Datei aus dem Projekt, die es nicht zu den Ordner erstellen, also irgendwo ist der Frühling laden der xml-vor der Analyse der yml?
Wie kann ich vermeiden, Logback zu erstellen, diese LOG_PATH_IS_UNDEFINED Verzeichnis?
InformationsquelleAutor Davi Alves | 2014-08-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ihrem Fall
LOG_PATH
definiert ist, nicht beim Start. Sollten Sie verwenden${LOG_PATH:-.}
statt , Sehen .Aber wenn Sie definieren
logging.path
in Ihremapplication.properties
sehen Sie zwei log-Dateien in.
und in${logging.path}
- Verzeichnis.Spring container-set
LOG_PATH
nach Logback Initialisierung... Logback wird nicht unterstützt faul Datei erstellen soweit ich weiß. In diesem Fall sollten Sielogback-spring.xml
stattlogback.xml
.InformationsquelleAutor Igor Tytar
Ich Stand vor ähnlichen Problem, und es ist leicht, es zu lösen. Grundsätzlich Konzept ist, dass Spring Boot schon gibt Sie System-property -
LOG_PATH
für Spring-Boot-Eigenschaft -logging.path
so definieren Sielogging.path
in Ihrer Anwendung.Eigenschaften und nutzen Sie einfachLOG_PATH
in Ihrem logback-Konfiguration -logback-spring.xml
.Sollte man nicht erklären, logback
<property ...>
fürLOG_PATH
, nur verwenden Sie es, Wann immer Sie wollen.Sehen, in der Nähe der unteren hier
InformationsquelleAutor Sabir Khan
Ich hatte das gleiche problem.
einen Eintrag in logback.xml
In der Anwendung.Eigenschaften
beim starten der Anwendung,den Namen des Verzeichnisses angelegt ist, was Sie definiert haben, in der properties-Datei.
InformationsquelleAutor Chaucer
Ich hatte das gleiche problem. Ich habe versucht, zu definieren, meine eigenen logback.xml und hatte Probleme mit der Anmeldung.Pfad und Protokollierung.Datei definierten Eigenschaften in meiner Anwendung.Eigenschaften-Datei. Hier ist, wie ich das gelöst (und herum) auf die Fragen ein.
Zuerst habe ich gelernt, dass man nicht definieren kann, sowohl logging, als.Pfad und Protokollierung.Datei-Eigenschaften. Da bin ich mit einem RollingFileAppender produzieren, die mehrere Dateien über mehrere Tage, definiere ich die Protokollierung.Datei, sondern es mehr wie eine Datei, die Präfix.
In
application.properties
In src/main/resources/
logback.xml
Dies scheint zu funktionieren für die meisten Teil. Ich definierte meine eigenen FILE_LOG_PATTERN in der Datei, die ich denke, ist optional. Der interessante Teil ist die fileNamePattern. Es richtig übersetzt Protokollierung.Datei von meiner Anwendung.properties-Datei in die variable LOG_FILE. Die einzige echte Hässlichkeit ist hier, dass beim Start Logback beschwert sich trotzdem über die log-Datei wird nicht definiert und erstellt eine leere Datei namens
LOG_FILE_IS_UNDEFINED_XXX
im aktuellen Verzeichnis. Aber die eigentliche log-Datei in meiner Eigenschaft wird erstellt und korrekt angehängt.Andrew
InformationsquelleAutor anschoewe
Vielleicht nicht Ihr Fall, aber wenn Sie haben
bootstrap.properties
stellen Sie sicherlogging.path
definiert ist und nur dort.InformationsquelleAutor prettyvoid
Deklarieren Sie die Eigenschaft LOG_PATH in Ihrem logback.xml
ist, wo müssen Sie das Verzeichnis angeben, wo die log-Dateien erstellt werden. Wenn dieses Feld leer gelassen wird, logback wird ein neues Verzeichnis erstellen, in dem die Ausführung des Programms. Der name des Verzeichnisses erstellt wird LOG_PATH_IS_UNDEFINED
Ist die Protokollierung.Pfad ein OS Umgebungsvariable? Wenn ja, sollte es ersetzt wie erwähnt, in der logback Dokumentation.
Nein, es ist eine Eigenschaft in der Anwendung.yml-Datei geladen Frühling. Also das ist, warum es scheint ein Problem zu sein mit SpringBoot laden der Protokollierungs-Konfiguration, bevor das laden der properties-Datei.
Ja, könnte sein. Ist es für Sie erforderlich, um zu definieren, logging-Pfad in yml Eigenschaften? Verwenden Sie die gleiche Eigenschaft unter anderen Orten auch in Ihrem Projekt?
Wäre schön, wenn alle meine Eigenschaften in einer einzigen Datei gedacht. Nope, nur für logback.xml.
InformationsquelleAutor Dheeraj Arora
einen Eintrag in logback:
und Referenz:
<fileNamePattern>${DEV_HOME}.%d{yyyy-MM-dd}.log</fileNamePattern>
InformationsquelleAutor dsfere
Versuchen Sie, den folgenden, um Ihre POM-Datei
InformationsquelleAutor Maro
also einfach umbenennen logback.xml zu your-logback.xml und fügen Sie
logging.config=classpath:your-logback.xml
in Ihrer Anwendung.EigenschaftenInformationsquelleAutor mikelinjie
Aufrufen, logback form einer externen Pfad in einem .yml-Datei, es funktionierte für mich wie:
Anmeldung:
config: C:/folder/logback.xml
InformationsquelleAutor bernardo
Ich hatte das gleiche problem, seit ich konfiguriert die Protokollierung.Pfad und Protokollierung.Datei auf Anfrage.Eigenschaften, aber einige logs erstellt wurde, bevor das Spring-Boot-LogBack-Konfiguration und-so Sie geschrieben wurden, in LOG_PATH_IS_UNDEFINED/LOG_FILE_IS_UNDEFINED Datei und dann die logs eingeschaltet, um den richtigen Standort.
Fand ich 2 mögliche Lösungen:
1) Konfigurieren Sie die Protokollierung.Pfad und Protokollierung.in der bootstrap-Datei.Eigenschaften, da die Konfiguration in der bootstrap-stattfinden, bevor
oder
2) die Protokollierung.Pfad und Protokollierung.Datei als system-Eigenschaften mit -Dlogging.path=... -Dlogging.Datei=..., wenn Sie die Anwendung starten,
InformationsquelleAutor Massimo Da Ros
wenn Sie an der Spring-Boot-Finchley (2.x), können Sie definieren
spring.application.name
in Ihremapplication.properties
oderapplication.yml
- Datei und fügen Sie Folgendes in Ihre Logback-Konfiguration:müssen Sie jetzt
${springAppName}
als variable zur Verfügung, die für Ihre log -pattern
.InformationsquelleAutor Dexter Legaspi
Bevor Spring-Boot-Umgebung bereit ist, die Spring-Boot-main-Klasse oder der
SpringApplication
initialisiert die loggerfactory, die Erkennung der Standard-Konfigurations-Datei (logback.groovy
,logback.xml
,logback-test.xml
), aber zu dieser Zeit das Spring-Boot-Anwendung noch nicht gestartet ist, was bedeutet, dass die variableLOG_PATH
ist nicht festgelegt. So sollen Sie zuerst ändern Sie den Namen Ihres logback Konfigurationsdatei und konfigurieren Sie die Datei-Namen manuell in das Spring-Boot-config alslogging.config
. Durch diese Art der logback konfigurieren einer console appender standardmäßig statt der Erstellung einer Datei-appender, und dann, wenn die Spring-Boot-Umgebung bereit ist, wird es Feuer ein enviromentready Ereignis, das bewirkt, dass ein logback stellen durchLoggingApplicationListener
. Sie finden die Ausstellung in der springboot Seite https://github.com/spring-projects/spring-boot/issues/2558InformationsquelleAutor Johnson
Ich nehme an, Sie haben einen Fehler enthalten Datei.
Bitte ändern Sie
zu
dann haben Sie einen Versuch.
InformationsquelleAutor Solar
version: 1.5.9
bootstrap.yml
spring-logback.xml
application.yml
spring-logback.xml
custom-log-Konfiguration:https://docs.spring.io/spring-boot/docs/1.5.6.RELEASE/reference/htmlsingle/#boot-features-custom-log-configuration
InformationsquelleAutor Zed