在Ubuntu系统中,Redis日志的默认存储路径为**/var/log/redis/redis-server.log**(通过apt安装的版本)。若使用源码编译安装,日志路径可能为/var/log/redis_6379.log(端口6379为默认端口)。
若无法确定日志位置,可通过以下命令搜索:
# 在/var/log目录下搜索含"redis"的文件(排除/proc、/sys目录)
find /var/log/* -name "*redis*" -not -path "/proc/*" -not -path "/sys/*"
# 或搜索整个系统(耗时较长,需权限)
find / -path /sys -prune -o -path /proc -prune -o -name "*redis*" 2>/dev/null
Redis日志的核心配置项位于**/etc/redis/redis.conf**文件中,主要涉及以下参数:
logfile参数可更改日志存储位置(需确保Redis用户对该目录有写入权限)。例如:logfile /var/log/redis/custom_redis.log
debug(所有信息)、verbose(详细信息)、notice(常规信息,推荐生产环境)、warning(警告信息)。例如:loglevel notice
always(每次写操作同步,最安全但性能低)、everysec(每秒同步,平衡性能与可靠性,推荐)、no(由系统决定,性能最高但可能丢失数据)。例如:appendfsync everysec
修改配置后,需重启Redis服务使更改生效:
sudo systemctl restart redis-server
为防止日志文件占用过多磁盘空间,需使用logrotate工具实现自动轮转。步骤如下:
创建logrotate配置文件:
在/etc/logrotate.d/目录下创建redis配置文件:
sudo nano /etc/logrotate.d/redis
添加以下内容(以保留7天日志为例):
/var/log/redis/redis-server.log {
daily # 每日轮转
rotate 7 # 保留7个旧日志
compress # 压缩旧日志(节省空间)
delaycompress # 延迟压缩(避免当天日志未完全写入时压缩)
missingok # 日志文件缺失时不报错
notifempty # 日志为空时不轮转
create 640 redis redis # 创建新日志时设置权限(用户:组=redis:redis)
sharedscripts # 所有日志轮转完成后执行脚本
postrotate
/usr/bin/systemctl reload redis.service > /dev/null 2>&1 || true
endscript
}
注:
create参数需确保Redis用户(通常为redis)对新日志文件有写入权限。
测试logrotate配置:
手动执行以下命令,验证配置是否正确:
sudo logrotate -f /etc/logrotate.d/redis
执行后,检查/var/log/redis/目录下是否生成压缩的旧日志(如redis-server.log.1.gz)。
实时查看日志:
使用tail命令实时查看日志文件内容(需sudo权限):
sudo tail -f /var/log/redis/redis-server.log
-f参数表示持续输出新增日志,-n 100可限制显示行数(如最后100行)。
查看压缩日志:
若日志已被压缩(如.gz文件),可使用gunzip解压后查看:
sudo gunzip /var/log/redis/redis-server.log.1.gz
sudo tail /var/log/redis/redis-server.log.1
清理旧日志:
若需手动删除旧日志,可直接删除对应文件(需确认已通过logrotate备份):
sudo rm /var/log/redis/redis-server.log.2.gz # 删除30天前的日志(假设保留7天)
/var/log/redis/目录及日志文件的属主为redis用户(可通过chown redis:redis /var/log/redis/ -R修改)。/var/log/目录的磁盘使用情况(df -h /var/log),避免日志占满磁盘。notice级别,避免debug级别产生过多无用日志。