我正在处理 Solr 5.1 创建太多日志文件的问题。每次 Solr 重新启动时,以及一周定期重新启动时,Solr 都会创建以下文件,我需要它停止:
- solr_gc_xxxxxxxx_xxxx 类型的文件,其中 x 分别代表日期和某种标识号。它们包含垃圾收集信息。
- solr_log_xxxxxxxx_xxxx 类型的文件,其中 x 分别代表日期和某种标识号。它们包含与您在 solr.log 中找到的相同类型的信息。
- 一个 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
file:
# 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
我想做的是:
- 仅创建 solr.log + 1 个备份文件。应定期覆盖 solr.log。
- 不创建任何其他日志文件。
我可以做什么来实现这个目标?
所以过了一段时间,我想出了如何解决这个问题。
回顾一下,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
in the log4j.properties
文件,可以在下面找到/path/to/solr/server/resources
.
如果您愿意,也可以注释掉mv
Solr 垃圾收集日志的行,这将为您留下solr_gc.log
only.
如果像我一样,您有其他方法来监控 Solr 的 gc,那么您需要完全关闭 gc 日志记录。
在同一目录下solr
脚本,打开solr.in.sh
(我认为仅限 Mac/Linuxsolr.cmd
适用于 Windows 用户)并注释掉这一行:# Enable verbose GC logging
GC_LOG_OPTS="-verbose:gc -XX:+PrintHeapAtGC -XX:+PrintGCDetails \
-XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime"
.
您将需要重新启动 Solr。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)