dataLogDir)Zookeeper的事务日志默认存储在dataLogDir指定的目录,需在/etc/zookeeper/conf/zoo.cfg中设置。若未配置,日志可能输出到dataDir(数据目录)。例如:
sudo nano /etc/zookeeper/conf/zoo.cfg
# 添加或修改以下行(确保目录存在且有写权限)
dataLogDir=/var/log/zookeeper
dataDir=/var/lib/zookeeper # 数据目录(默认)
创建目录并授权:
sudo mkdir -p /var/log/zookeeper
sudo chown -R $(whoami):$(whoami) /var/log/zookeeper
log4j.properties)Zookeeper使用Log4j管理日志级别和滚动,需编辑/etc/zookeeper/conf/log4j.properties(若不存在则创建)。关键配置如下:
# Root logger:设置根日志级别(INFO/WARN/DEBUG/ERROR)和输出appender
log4j.rootLogger=INFO, ROLLINGFILE
# RollingFileAppender:按文件大小滚动(MaxFileSize)并保留指定数量备份(MaxBackupIndex)
log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLINGFILE.File=/var/log/zookeeper/zookeeper.log # 日志文件路径
log4j.appender.ROLLINGFILE.MaxFileSize=10MB # 单个日志文件最大大小
log4j.appender.ROLLINGFILE.MaxBackupIndex=10 # 保留的旧日志文件数量
log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n # 日志格式
说明:
TRACE→DEBUG→INFO→WARN→ERROR→FATAL,生产环境建议用INFO,调试用DEBUG。DailyRollingFileAppender)。修改配置后,需重启服务使更改生效:
sudo systemctl restart zookeeper
使用tail命令实时查看日志文件(默认路径为/var/log/zookeeper/zookeeper.log):
tail -f /var/log/zookeeper/zookeeper.log
logrotate工具(推荐)创建/etc/logrotate.d/zookeeper配置文件,实现自动轮转:
sudo nano /etc/logrotate.d/zookeeper
添加以下内容(按天轮转,保留7天,压缩旧日志):
/var/log/zookeeper/*.log {
daily
missingok
rotate 7
compress
notifempty
create 640 root adm
sharedscripts
postrotate
/usr/bin/systemctl reload zookeeper > /dev/null 2>&1 || true
endscript
}
测试手动轮转:
sudo logrotate -f /etc/logrotate.d/zookeeper
zkCleanup.sh)使用zkCleanup.sh清理旧的事务日志(version-*目录)和快照文件(snapshot-*目录):
# 清理保留最近7天的事务日志和快照
sudo /usr/share/zookeeper/bin/zkCleanup.sh -n 7 -d /var/lib/zookeeper
# 添加cron定时任务(每天凌晨2点执行)
echo "0 2 * * * /usr/share/zookeeper/bin/zkCleanup.sh -n 7 -d /var/lib/zookeeper" | sudo tee /etc/cron.d/zookeeper-cleanup > /dev/null
若需将日志输出到控制台(调试用),可修改log4j.properties中的rootLogger:
log4j.rootLogger=INFO, CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
修改后需重启Zookeeper服务。
dataLogDir和log4j.appender.ROLLINGFILE.File的路径存在且Zookeeper进程有写权限。journalctl -u zookeeper查看系统日志中的Zookeeper输出。