2017-11-14 1 views
0

Lassen Sie mich diesen gesamten Thread umschreiben.Verwalten einer Protokolldatei in Grails

Ich habe eine Web-Anwendung geschrieben mit Grails und läuft auf einer VM, auf der Linux läuft.

Die Webanwendung muss eine separate und unterschiedliche Protokolldatei verwalten, die sehr wichtige Informationen für den Benutzer der Anwendung enthält. Ich möchte nur, dass es Informationen enthält, an die ich schreibe. Nichts anderes, also kann ich Tomcat-Logging usw. nicht verwenden. Ich brauche eine separate Log-Datei, weil der Benutzer der Anwendung nicht schlau genug ist, ein Tomcat-Log zu lesen.

Wenn ich eine Protokolldatei auf dem lokalen Laufwerk C: natürlich funktioniert, wenn ich es in Debug über IntelliJ ausführen, aber sobald ich es aufwarf und es in Tomcat, die nicht mehr funktioniert, und ich bekomme eine ClassNotFoundException .

String myCurrentDate = new Date().format('yyyyMMddhhmm') 
def newFile = "C:\\Temp\\MyLogFile-Log-" + myCurrentDate + ".txt.old" 
def file = new File('C:\\Temp\\MyLogFile-Log.txt') 
file.renameTo(new File(newFile)) 
file.delete() 

Was ist der beste Weg, dies zu tun? Host die Log-Datei auf dem Linux-Rechner? sftp scheint auch nicht die Antwort zu sein. Ich muss in der Lage:

  • Auf Antrag Ausführung die alte Protokolldatei umbenennen zu archivieren und löschen dann die alte Protokolldatei
  • Schreiben in die Protokolldatei

Wenn ich es auf tun Linux Wie lege ich den Speicherort der Datei fest?

Antwort

1

Die neuesten Versionen von Grails werden mit logback Unterstützung geliefert. Normalerweise finden Sie eine logback.groovy unter grails-app/conf.

Das Beispiel einer voll funktionsfähigen Datei:

import ch.qos.logback.classic.encoder.PatternLayoutEncoder 
import ch.qos.logback.core.rolling.RollingFileAppender 
import ch.qos.logback.core.rolling.TimeBasedRollingPolicy 


appender('FILE', RollingFileAppender){ 
    file = '/var/log/MyLogFile-Log.log' 
    append = true 
    encoder(PatternLayoutEncoder){ pattern = '%d{HH:mm:ss.SSS} [%thread] %level %logger{36} - %msg%n' } 
    rollingPolicy(TimeBasedRollingPolicy){ 
    fileNamePattern = '/var/log/MyLogFile-Log-%d{yyyy-MM-dd}.log' 
    maxHistory = 30 
    } 
} 

logger 'com.your.important.package', INFO 

root INFO, 'FILE' 

Hier ein RollingFileAppender verwendet wird, Backup-Dateien jeden Tag zu schaffen.

+0

Ich bin derzeit stecken mit Grails 2.2.5, ich nehme an, das ist nicht in dieser Version verfügbar? appender kommt unauflösbar. – Sulteric

+0

siehe http://docs.grails.org/2.2.5/guide/single.html#logging dann. Die Struktur des Konfigurationsabschnitts sieht dem Logback sehr ähnlich. Die Klassennamen müssen natürlich geändert werden – injecteer

Verwandte Themen