MongoDB日志记录了数据库实例的健康状态、语句的执行状况、资源的消耗情况,所以日志对于分析数据库服务和性能优化很有帮助。
因此,很有必要花费一些时间来学习解析一下MongoDB的日志文件。
日志信息的格式
<日志时间> <严重级别> <信息所属分类> [<内容>] <消息>
例如 :
2014-11-03T18:28:32.450-0500 I NETWORK [initandlisten] waiting for connections on port 27017
日志信息严重级别
级别 | 级别描述 |
F | Fatal |
E | Error |
W | Warning |
I | Informational, for Verbosity Level of 0 |
D | Debug, for All Verbosity Levels > 0 |
信息所属分类
日志分类 | 英文 | 分类描述 |
登入信息 | ACCESS | 登入访问相关的信息,例如登录验证情况。 |
命令信息 | COMMAND | 数据库执行命令相关信息,例如,查询。 |
控制管理信息 | CONTROL | 记录控制管理相关的信息,例如数据库初始化。 |
FTDC信息 | FTDC(full-time diagnostic data ) | 全程检测数据信息,例如Server的状态统计信息。 |
索引信息 | INDEX | 索引相关信息,例如索引的创建过程信息。 |
网络信息 | NETWORK | 网络相关信息,例如网络连接信息。 |
查询信息 | QUERY | 查询相关信息,例如查询计划信息。 |
副本集信息 | REPL | 副本集相关信息,例如副本集初始过程、心跳、回滚等信息 |
分片信息 | SHARDING | 分片相关信息,例如mongos的启动信息 |
存储信息 | STORAGE | 存储相关信息,例如将 storage 层的数据刷入磁盘的信息。 |
还原信息 | RECOVERY | 还原活动相关的信息 |
日志信息 | JOURNAL | 日志相关的信息 |
写操作信息 | WRITE | 写操作相关的信息,例如更新(update)的命令。 |
查询日志详细等级
MongoDB将日志详细等级划分为0~5
1. 0 是MongoDB日志的的默认级别,会包含 Informational 类信息。
2. 1~5 是调试级别,会记录客户端所有的完整请求
查询日志详细等级的命令。
db.getLogComponents()
修改日志详细等级
修改日志详细等级的途径有两种。
第一种 设置logComponentVerbosity 参数来进行修改。
另外还需说明的一点是日志分类还可以进一步细化,
例如:将systemLog 整体设置为1,其中 query 子项 设置为2。
修改的具体命令为:
db.adminCommand( {
setParameter: 1,
logComponentVerbosity: {
verbosity: 1,
query: {
verbosity: 2
}
}
} )
恢复原级别:
db.adminCommand( {
setParameter:0,
logComponentVerbosity: {
verbosity: 0,
query: {
verbosity: -1
}
}
} )