2015-06-23 2 views
5

Я имею дело с проблемой, когда Solr 5.1 создает слишком много файлов журнала. Каждый раз, когда Solr возобновляется, и периодически в течение всей недели, Solr создает следующие файлы и мне нужно, чтобы остановить:Solr 5.1: Solr создает слишком много файлов журнала

  1. Файлы типа solr_gc_xxxxxxxx_xxxx, где иксы стоят на дату и своего рода идентификационного номера, соответственно. Они содержат информацию о сборе мусора.
  2. Файлы типа solr_log_xxxxxxxx_xxxx, где стоят x для даты и определенного идентификационного номера, соответственно. Они содержат ту же информацию, которую вы найдете в solr.log.
  3. Один файл типа solr- [port] -console.log. Она всегда содержит только следующий текст: WARNING: System properties and/or JVM args set. Consider using --dry-run or --exec

В течение одной недели я мучил почти тридцать файлов типа 1 и 2!

Хуже того, типы файлов 1 и 2, похоже, не соответствуют моей настройке log4j.rootlogger и вместо этого заполняются материалом уровня INFO.

Вот соответствующие части моего log4j.properties файла:

# 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 

То, что я хочу сделать, это следующее:

  1. Создать только solr.log + один резервный файл. solr.log следует периодически перезаписывать.
  2. Не создавать никаких других файлов журнала.

Что я могу сделать для этого?

ответ

7

Так что через некоторое время я выяснил, как это исправить.

Напомним, что Solr продолжал создавать целую кучу файлов с шаблонами solr_log * и gc_log * при запуске и периодически в течение дня. В конце концов у меня были довольно серьезные проблемы с пространством из-за бесконечного количества журналов, которые Solr любит создавать.

Перейдите к /path/to/solr/bin и найдите сценарий solr, который запускается при запуске. Откройте файл, обратите внимание на следующее, и закомментируйте 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 

Или удалить его, если вам нравится. Вы также можете попробовать не использовать флаг -f, но здесь, в моем магазине нам это нравится.

Это сохранит solr.log, но Solr больше не будет создавать резервные копии. Если вы хотите ежедневное резервное копирование, я рекомендую настроить TimeBasedRollingPolicy или, еще лучше, DailyRollingFileAppender в файле log4j.properties, который можно найти под /path/to/solr/server/resources.

Если вы хотите, вы также можете прокомментировать строку mv для журналов сбора мусора Solr, которая оставит вас только с solr_gc.log.

Если у вас есть другие способы отслеживания gc для Solr, вам необходимо полностью отключить gc logging.

В том же каталоге, что и solr скрипта, откройте solr.in.sh (Mac/Linux только, я думаю, что solr.cmd для пользователей Windows) и комментарий этой строки: # Enable verbose GC logging GC_LOG_OPTS="-verbose:gc -XX:+PrintHeapAtGC -XX:+PrintGCDetails \ -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime".

Вам необходимо перезапустить Solr.

+2

Если на окнах отключить подробные записи gc в скрипте * solr.in.cmd * с 'REM'. – dalenewman

+0

@TMBT спасибо за это! Если кто-либо из команды разработчиков solR когда-либо читает это ... пожалуйста, пойдите и исправьте свои стартовые скрипты !!! WTF? –