2015-06-23 7 views
5

Ich habe ein Problem, bei dem Solr 5.1 viel zu viele Protokolldateien erstellt. Jedes Mal, Solr neu gestartet wird, und in regelmäßigen Abständen während der Woche, erstellt Solr die folgenden Dateien und ich brauche es zu stoppen:Solr 5.1: Solr erstellt viel zu viele Protokolldateien

  1. Dateien des Typs solr_gc_xxxxxxxx_xxxx, wo die x für das Datum stehen und eine Art Zahl der Identifizierung, beziehungsweise. Diese enthalten Informationen zur Speicherbereinigung.
  2. Dateien vom Typ solr_log_xxxxxxxx_xxxx, wobei die x für das Datum und eine Art Identifikationsnummer stehen. Diese enthalten die gleiche Art von Informationen, die Sie in solr.log finden.
  3. Eine Datei vom Typ solr- [port] -console.log. Es enthält immer nur den folgenden Text: WARNING: System properties and/or JVM args set. Consider using --dry-run or --exec

In einer Woche zerbrechen ich fast dreißig von Dateien vom Typ 1 und 2 aufgestiegen!

Noch schlimmer, Dateitypen 1 und 2 scheinen nicht meine log4j.rootlogger Einstellung zu respektieren und stattdessen sind mit INFO-Ebene Material gefüllt.

Hier sind die relevanten Teile meiner log4j.properties Datei:

# Logging level 
solr.log=logs 
log4j.rootLogger=WARN, file 

#- size rotation with log cleanup. 
log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.MaxFileSize=100MB 
log4j.appender.file.File=${solr.log}/solr.log 
log4j.appender.file.MaxBackupIndex=0 

Was ich will ist folgendes zu tun:

  1. Erstellen Sie nur solr.log + eine Sicherungsdatei. solr.log sollte regelmäßig überschrieben werden.
  2. Keine andere Protokolldatei erstellen.

Was kann ich tun, um dies zu erreichen?

Antwort

7

Also habe ich nach einiger Zeit herausgefunden, wie ich das beheben kann.

Zur Erinnerung, Solr erstellt eine ganze Reihe von Dateien mit den Mustern solr_log * und gc_log * beim Start und in regelmäßigen Abständen den ganzen Tag. Letztendlich hatte ich aufgrund der endlosen Menge von Logs, die Solr gerne erstellt, ziemlich ernsthafte Platzprobleme.

Navigieren Sie zu /path/to/solr/bin und suchen Sie das Skript solr, das beim Start ausgeführt wird. Öffnen Sie die Datei, suchen Sie nach folgenden und kommentieren Sie mv "$SOLR_LOGS_DIR/solr.log" "$SOLR_LOGS_DIR/solr_log_$(date +"%Y%m%d_%H%M")":

# backup the log files before starting 
if [ -f "$SOLR_LOGS_DIR/solr.log" ]; then 
    if $verbose ; then 
    echo "Backing up $SOLR_LOGS_DIR/solr.log" 
    fi 
    mv "$SOLR_LOGS_DIR/solr.log" "$SOLR_LOGS_DIR/solr_log_$(date +"%Y%m%d_%H%M")" 
fi 

Oder entfernen Sie es, wenn Sie möchten. Du könntest auch versuchen, die -f Flagge nicht zu benutzen, aber hier in meinem Geschäft mögen wir es.

Dies wird solr.log beibehalten, aber Solr wird keine Backups mehr machen. Wenn Sie tägliche Backups möchten, empfehle ich, eine TimeBasedRollingPolicy oder besser noch eine DailyRollingFileAppender Datei in der log4j.properties Datei zu konfigurieren, die unter /path/to/solr/server/resources zu finden ist.

Wenn Sie möchten, können Sie auch die mv Zeile für die Solr Garbage Collection-Protokolle auskommentieren, die Sie nur mit solr_gc.log verlassen.

Wenn Sie, wie ich, andere Möglichkeiten haben, gc für Solr zu überwachen, dann müssen Sie die GC-Protokollierung vollständig ausschalten.

Im selben Verzeichnis wie das solr Skript, öffnen solr.in.sh (nur Mac/Linux, ich denke, solr.cmd für Windows-Benutzer ist) und diese Zeile auf Kommentar: # Enable verbose GC logging GC_LOG_OPTS="-verbose:gc -XX:+PrintHeapAtGC -XX:+PrintGCDetails \ -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime".

Sie müssen Solr neu starten.

+2

Deaktivieren Sie bei Windows die ausführliche GC-Protokollierung im Script * solr.in.cmd * mit 'REM'. – dalenewman

+0

@TMBT danke für das herauszufinden! Wenn jemand aus dem SolR-Entwickler-Team das liest ... bitte geh und repariere deine Start-Skripte !!! WTF? –