MongoDB日志文件的默认位置因操作系统而异,需先确认路径以避免查找错误:
/var/log/mongodb/mongod.log(部分系统可能通过配置文件修改路径);C:\Program Files\MongoDB\Server\<版本号>\logs\mongod.log(如C:\Program Files\MongoDB\Server\6.0\logs\mongod.log)。/etc/mongod.conf,Windows下为安装目录下的mongod.cfg),找到systemLog.path参数对应的值即为日志文件位置。cat命令查看完整日志:cat /var/log/mongodb/mongod.log;less命令分页查看(支持上下翻页):less /var/log/mongodb/mongod.log;head命令查看前N行(如前20行):head -n 20 /var/log/mongodb/mongod.log。notepad命令打开日志文件:notepad "C:\Program Files\MongoDB\Server\<版本号>\logs\mongod.log";Get-Content命令(PowerShell):Get-Content "C:\Program Files\MongoDB\Server\<版本号>\logs\mongod.log"。使用文本编辑器(如Linux下的vim、Windows下的Notepad++/Sublime Text)直接打开日志文件,支持语法高亮、搜索(如Ctrl+F查找关键字)等功能,方便定位特定信息。
若需跟踪日志文件的实时变化(如排查正在发生的错误),可使用以下命令:
tail -f /var/log/mongodb/mongod.log(持续输出日志文件的新增内容,按Ctrl+C退出);Get-Content "C:\Program Files\MongoDB\Server\<版本号>\logs\mongod.log" -Wait(实时刷新日志内容,关闭窗口退出)。MongoDB自带的mongo shell提供了获取日志的命令,无需直接访问文件:
db.getLogComponents()(显示当前日志记录的组件及级别,如verbosity级别);db.adminCommand({getLog: 1})(返回包含所有日志信息的文档,可通过管道筛选关键字,如db.adminCommand({getLog: 1}).log.filter(log => log.msg.includes("error")));db.runCommand({logRotate: 1})(将当前日志文件重命名并创建新日志文件,常用于日志归档)。mlogfilter:筛选特定时间或慢查询日志(如mlogfilter mongod.log --from "2025-10-01" --to "2025-10-02" --slow 1000);mplotqueries:生成查询性能图表(如mplotqueries mongod.log --group namespace);mloginfo:统计日志信息(如mloginfo mongod.log)。logrotate工具管理日志轮转,编辑/etc/logrotate.d/mongodb文件,示例配置:/var/log/mongodb/mongod.log {
daily # 每天轮转
rotate 7 # 保留7天日志
compress # 压缩旧日志(如.gz格式)
missingok # 若日志不存在也不报错
notifempty # 若日志为空则不轮转
sharedscripts # 所有日志轮转完成后执行脚本
copytruncate # 复制原日志后清空(避免服务中断)
dateext # 添加日期后缀(如mongod.log-20251019)
size 200M # 日志超过200MB时轮转
postrotate # 轮转后执行的命令(通知mongod重新打开日志文件)
/bin/kill -SIGUSR1 $(cat /var/log/mongodb/mongod.lock) 2>/dev/null || true
}
保存后,logrotate会按配置自动轮转日志。