Rotate Log Files旋转日志文件
On this page本页内容
Overview概述
When used with the 当与--logpath
option or systemLog.path
setting, mongod
and mongos
instances report a live account of all activity and operations to a log file. --logpath
选项或systemLogpath设置一起使用时,mongod
和mongos
实例会向日志文件报告所有活动和操作的实时帐户。When reporting activity data to a log file, by default, MongoDB only rotates logs in response to the 在向日志文件报告活动数据时,默认情况下,MongoDB仅在响应logRotate
command, or when the mongod
or mongos
process receives a SIGUSR1
signal from the operating system. logRotate
命令时,或者在mongod
或mongos
进程接收到来自操作系统的SIGUSR1
信号时旋转日志。Both server logs and audit logs may be rotated with the 服务器日志和审核日志都可以使用logRotate
command, either together or independently.logRotate
命令一起旋转,也可以单独旋转。
MongoDB's standard log rotation approach archives the current log file and starts a new one. MongoDB的标准日志轮换方法将当前日志文件归档并启动一个新的日志文件。To do this, the 为此,mongod
or mongos
instance renames the current log file by appending a UTC timestamp to the filename, in ISODate format. It then opens a new log file, closes the old log file, and sends all new log entries to the new log file.mongod
或mongos
实例通过在文件名后面附加一个UTC时间戳(ISODate格式)来重命名当前日志文件。然后,它打开一个新的日志文件,关闭旧的日志文件并将所有新的日志条目发送到新日志文件。
You can also configure MongoDB to support the Linux/Unix 您还可以通过将logrotate
utility by setting systemLog.logRotate
or --logRotate
to reopen
. systemLog.logRotate
或--logrotate
设置为reopen
,将MongoDB配置为支持Linux/Unix logrotate
实用程序。With 通过reopen
, mongod
or mongos
closes the log file, and then reopens a log file with the same name, expecting that another process renamed the file prior to rotation.reopen
,mongod
或mongos
关闭日志文件,然后重新打开具有相同名称的日志文件,期望另一个进程在旋转之前重命名该文件。
Finally, you can configure 最后,您可以使用mongod
to send log data to the syslog
using the --syslog
option. --syslog
选项将mongod
配置为将日志数据发送到syslog
。In this case, you can take advantage of alternate log rotation tools.在这种情况下,您可以利用备用日志旋转工具。
To rotate the log files, you must perform one of these steps:要旋转日志文件,必须执行以下步骤之一:
Send a向SIGUSR1
signal to themongod
ormongos
process.mongod
或mongos
进程发送SIGUSR1
信号。Run the MongoDB运行MongoDBlogRotate
command.logRotate
命令。Run the Linux/Unix运行Linux/Unixlogrotate
utility.logrotate
实用程序。
See the examples later on this page.请参阅本页后面的示例。
See also: 另请参阅:
For information on logging, see the Process Logging section.有关日志记录的信息,请参阅进程日志记录部分。
Default Log Rotation Behavior默认日志旋转行为
By default, MongoDB uses the 默认情况下,MongoDB使用--logRotate rename
behavior. --logRotate rename
行为。With 通过rename
, mongod
or mongos
renames the current log file by appending a UTC timestamp to the filename, opens a new log file, closes the old log file, and sends all new log entries to the new log file.rename
,mongod
或mongos
通过在文件名后附加UTC时间戳来重命名当前日志文件,打开新的日志文件,关闭旧的日志文件并将所有新的日志条目发送到新的日志文件。
Start a mongod
instance.启动一个mongod
实例。
mongod
instance.mongod -v --logpath /var/log/mongodb/server1.log
You can also explicitly specify 您还可以显式指定--logRotate rename
.--logRotate rename
。
Rotate the log file.旋转日志文件。
Rotate the log file by issuing the 通过从logRotate
command from the admin
database in mongosh
:mongosh
中的admin
数据库发出logRotate
命令来旋转日志文件:
db.adminCommand( { logRotate : "server" } )
If auditing is enabled, you can specify 如果启用了审核,则可以指定1
to logRotate
(instead of server
) to rotate both the server and audit logs at the same time, if desired. 1
到logRotate
(而不是server
),以便根据需要同时旋转服务器和审核日志。The audit log will be rotated in the same fashion as the server log, according to the 根据--logRotate
setting.--logRotate
设置,审核日志将以与服务器日志相同的方式旋转。
You can't run this command on an arbiter for an authenticated replica set.您不能在经过身份验证的副本集的仲裁器上运行此命令。
View the new log files查看新的日志文件
List the new log files to view the newly-created log:列出新的日志文件以查看新创建的日志:
ls /var/log/mongodb/server1.log*
There should be two log files listed: 应该列出两个日志文件:server1.log
, which is the log file that mongod
or mongos
made when it reopened the log file, and server1.log.<timestamp>
, the renamed original log file.server1.log
和server1.log.<timestamp>
,前者是mongod
或mongos
在重新打开日志文件时创建的日志文件,后者是重命名后的原始日志文件
Rotating log files does not modify the "old" rotated log files. 旋转日志文件不会修改“旧”旋转的日志文件。When you rotate a log, you rename the 当您旋转日志时,您重命名server1log文件以包含时间戳,并且一个新的空server1.log
file to include the timestamp, and a new, empty server1.log
file receives all new log input.server1.log
文件接收所有新的日志输入。
Log Rotation with --logRotate reopen
日志旋转使用--logRotate reopen
--logRotate reopen
Log rotation with 使用--logRotate reopen
closes and opens the log file following the typical Linux/Unix log rotate behavior.--logRotate reopen
的日志旋转按照典型的Linux/Unix日志旋转行为关闭和打开日志文件。
Start a mongod
instance, specifying the reopen
--logRotate
behavior.启动一个mongod
实例,指定code>reopen --logRotate
行为。
mongod
instance, specifying the reopen
--logRotate
behavior.mongod -v --logpath /var/log/mongodb/server1.log --logRotate reopen --logappend
You must use the 必须将--logappend
option with --logRotate reopen
.--logappend
选项与--logRotate reopen
一起使用。
Rotate the log file.旋转日志文件。
Rotate the log file by issuing the 通过从logRotate
command from the admin
database in mongosh
:mongosh
中的admin
数据库发出logRotate
命令来旋转日志文件:
db.adminCommand( { logRotate : "server" } )
You should rename the log file using an external process, following the typical Linux/Unix log rotate behavior.您应该使用外部进程重命名日志文件,遵循典型的Linux/Unix日志旋转行为。
Syslog Log RotationSyslog日志轮换
With syslog log rotation, 使用syslog日志轮换,mongod
sends log data to the syslog rather than writing it to a file.mongod
将日志数据发送到syslog,而不是将其写入文件。
Starting in version 4.2, MongoDB includes the component in its log messages to 从4.2版本开始,MongoDB在其到syslog
.syslog
的日志消息中包含了该组件。
Start a mongod
instance with the --syslog
option使用--syslog
选项启动mongod
实例
mongod
instance with the --syslog
optionmongod --syslog
Do not include 不包括--logpath
. Since --syslog
tells mongod
to send log data to the syslog, specifying a --logpath
will causes an error.--logpath
。由于--syslog
告诉mongod
将日志数据发送到syslog,因此指定--logpath
将导致错误。
To specify the facility level used when logging messages to the syslog, use the 要指定将消息记录到syslog时使用的设施级别,请使用--syslogFacility
option or systemLog.syslogFacility
configuration setting.--syslogFacility
选项或systemLog.syslogFacility
配置设置。
Forcing a Log Rotation with SIGUSR1
使用SIGUSR1
强制日志旋转
SIGUSR1
For Linux and Unix-based systems, you can use the 对于基于Linux和Unix的系统,可以使用SIGUSR1
signal to rotate the logs for a single process.SIGUSR1
信号旋转单个进程的日志。
For example, if a running 例如,如果一个正在运行的mongod
instance has a process ID (PID) of 2200
, the following command rotates the log file for that instance on Linux:mongod
实例的进程ID(PID)为2200
,则以下命令会在Linux上旋转该实例的日志文件:
kill -SIGUSR1 2200