OPTIONS

Rotate Log Files

Overview

Log rotation using MongoDB’s standard approach archives the current log file and starts a new one. To do this, the mongod or mongos instance renames the current log file by appending a UTC (GMT) 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.

MongoDB’s standard approach to log rotation only rotates logs in response to the logRotate command, or when the mongod or mongos process receives a SIGUSR1 signal from the operating system.

Alternately, you may configure mongod to send log data to syslog. In this case, you can take advantage of alternate logrotation tools.

See also

For information on logging, see the Process Logging section.

Log Rotation With MongoDB

The following steps create and rotate a log file:

  1. Start a mongod with verbose logging, with appending enabled, and with the following log file:

    mongod -v --logpath /var/log/mongodb/server1.log --logappend
    
  2. In a separate terminal, list the matching files:

    ls /var/log/mongodb/server1.log*
    

    For results, you get:

    server1.log
    
  3. Rotate the log file using one of the following methods.

    • From the mongo shell, issue the logRotate command from the admin database:

      use admin
      db.runCommand( { logRotate : 1 } )
      

      This is the only available method to rotate log files on Windows systems.

    • For Linux systems, rotate logs for a single process by issuing the following command:

      kill -SIGUSR1 <mongod process id>
      
  4. List the matching files again:

    ls /var/log/mongodb/server1.log*
    

    For results you get something similar to the following. The timestamps will be different.

    server1.log  server1.log.2011-11-24T23-30-00
    

    The example results indicate a log rotation performed at exactly 11:30 pm on November 24th, 2011 UTC, which is the local time offset by the local time zone. The original log file is the one with the timestamp. The new log is server1.log file.

    If you issue a second logRotate command an hour later, then an additional file would appear when listing matching files, as in the following example:

    server1.log  server1.log.2011-11-24T23-30-00  server1.log.2011-11-25T00-30-00
    

    This operation does not modify the server1.log.2011-11-24T23-30-00 file created earlier, while server1.log.2011-11-25T00-30-00 is the previous server1.log file, renamed. server1.log is a new, empty file that receives all new log output.

Syslog Log Rotation

New in version 2.2.

To configure mongod to send log data to syslog rather than writing log data to a file, use the following procedure.

  1. Start a mongod with the syslog option.
  2. Store and rotate the log output using your system’s default log rotation mechanism.

Important

You cannot use syslog with systemLog.path.