2016-04-13 11 views
1

Ich verwende derzeit Spring Boot in meiner Anwendung, und ich weiß, dass es Logback als Standard-Protokollierungsimplementierung verwendet.Zeitstempel zur Protokolldatei im Spring Boot hinzufügen?

Zeit in meiner applications.properties Datei habe ich folgendes:

#some other properties 

#logging details 
logging.path= path/to/my/log/folder 

Das zur Zeit in einer Datei protokolliert: spring.log in meinem Ausgabeordner.

Wie kann ich diese Datei ändern, so dass sie einen Zeitstempel und das Datum enthält von wann es erstellt wurde?

Eg - "my-Anwendung-log-DATE-TIME.log"

Antwort

0

Drop the properties Datei Stil Konfiguration und verwenden logback die richtige eine - logback.xml. Spring Boot ist darauf vorbereitet! Hier ein Beispiel:

<property name="logPattern" value="%d %-5level %logger{35} - %msg%n"/> 
<property name="logEncoding" value="UTF-8"/> 
<property name="logDirectory" value="logs"/> 

<appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>${logDirectory}/myapplication.log</file> 
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
     <fileNamePattern>${logDirectory}/myapplication_%d{yyyy-MM-dd}.%i.log</fileNamePattern> 
     <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 
      <maxFileSize>30MB</maxFileSize> 
     </timeBasedFileNamingAndTriggeringPolicy> 
    </rollingPolicy> 
    <encoder> 
     <charset>${logEncoding}</charset> 
     <pattern>${logPattern}</pattern> 
    </encoder> 
</appender> 

<logger name="org.springframework" level="warn"/> 

<root level="INFO"> 
    <appender-ref ref="fileAppender"/> 
</root> 

Dies wird nicht nur einen Zeitstempel in die Protokolldatei hinzufügen, aber Sie werden mit Log-Rotation auch helfen (zB es wird halten alte Protokolle bis Sie erreichen eine bestimmte Größe, usw.).

+0

Danke, wo stelle ich das in mein Projekt? – java123999

+0

Angenommen, Sie haben ein mavenbasiertes Projekt, erstellen Sie einfach eine Datei mit dem Namen logback.xml, und legen Sie sie unter src/main/resources ab. Kopieren Sie dann den Inhalt in diese Datei. Auch habe ich einen Fehler gemacht und habe nicht die ganze Datei hier kopiert ... Starten Sie die Datei mit und beenden Sie sie mit, um eine korrekte XML zu erstellen. –

+0

Überprüfen Sie diesen Link für ein paar vollständige Beispiele für die Logback-Konfiguration. http://www.mkyong.com/logging/logback-xml-example/ –

0

Im appender, versuchen Sie dies hinzuzufügen:

<layout class="ch.qos.logback.classic.PatternLayout"> 
      <Pattern> 
       %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n 
      </Pattern>  </layout> 
+0

Ich bin mir nicht sicher, was Sie mit Appender meinen? Danke – java123999

0

Sie sind auf dem richtigen Weg, es zu tun. Verwenden Sie die property support von Spring Boot, um die Datei application.properties anzupassen.

// application.properties file 
app.name=appname 
logging.path=logpath 
logging.file=${appname}-{timestamp}.log 

In der anderen Hand in Ihre Begleitband Klasse, können Sie eine URL Helfer schaffen den Eigenschaftswert zu erhalten:

/** 
* Helper class to get configured urls. 
*/ 
@Component 
public class UrlHelper { 

    @Inject 
    private Environment env; 

    private static final String LOGGING_TIMESTAMP = "{timestamp}"; 

private static String loggingFileUrlPattern; 

/** 
    * Initializes properties. 
    */ 
    @PostConstruct 
    public void initProperties() { 

     loggingFileUrlPattern = env.getRequiredProperty("logging.file"); 
    } 

/** 
    * Formats the loggin Url pattern application property with the current 
    * timestamp 
    * 
    * @param timestamp 
    *   current timestamp. 
    * @return The complete logging file url. 
    */ 

    public static String buildLoggingFileUrl(String timestamp) { 
     return loggingFileUrlPattern.replace(LOGGING_FILE_URL, timestamp); 
    } 
} 

Hoffe, es hilft!