@@ -7,111 +7,69 @@ Rotate Log Files
7
7
Overview
8
8
--------
9
9
10
- Log rotation using MongoDB's standard approach archives the current
10
+ During normal operation :program:`mongod` and :program:`mongos` report
11
+ a live account of all activity and operations to a log file.
12
+ When the log file reaches its limits, the system must replace or
13
+ rotate the log file.
14
+
15
+ MongoDB's standard log rotation approach archives the current
11
16
log file and starts a new one. To do this, the :program:`mongod` or
12
17
:program:`mongos` instance renames the current log file by appending a
13
- UTC (GMT) timestamp to the filename, in :term:`ISODate` format. It then
18
+ UTC timestamp to the filename, in :term:`ISODate` format. It then
14
19
opens a new log file, closes the old log file, and sends all new log
15
20
entries to the new log file.
16
21
17
- MongoDB's standard approach to log rotation only rotates logs
22
+ Alternatively, you can configure MongoDB to use the standard Linux/Unix
23
+ log rotate behavior by setting :setting:`systemLog.logRotate` or
24
+ :option:`--logRotate` to ``reopen``. With ``reopen``, :program:`mongod`
25
+ or :program:`mongos` closes the log file, and
26
+ then reopens a log file with the same name, expecting that another
27
+ process renamed the file prior to rotation.
28
+
29
+ Finally, you can configure :program:`mongod` to send log data to the ``syslog``. In
30
+ this case, you can take advantage of alternate logrotation tools.
31
+
32
+ By default, MongoDB only rotates logs
18
33
in response to the :dbcommand:`logRotate` command, or when the
19
34
:program:`mongod` or :program:`mongos` process receives a ``SIGUSR1``
20
35
signal from the operating system.
21
36
22
- Alternately, you may configure mongod to send log data to ``syslog``. In
23
- this case, you can take advantage of alternate logrotation tools.
24
-
25
37
.. seealso:: For information on logging, see the
26
38
:ref:`monitoring-standard-loggging` section.
27
39
28
- Log Rotation With MongoDB
29
- -------------------------
40
+ Log Rotation with ``--logRotate rename``
41
+ ----------------------------------------
30
42
31
43
The following steps create and rotate a log file:
32
44
33
- 1. Start a :program:`mongod` with verbose logging, with appending
34
- enabled, and with the following log file:
35
-
36
- .. code-block:: javascript
37
-
38
- mongod -v --logpath /var/log/mongodb/server1.log --logappend
39
-
40
- #. In a separate terminal, list the matching files:
41
-
42
- .. code-block:: javascript
43
-
44
- ls /var/log/mongodb/server1.log*
45
-
46
- For results, you get:
47
-
48
- .. code-block:: javascript
49
-
50
- server1.log
45
+ .. include:: /includes/steps/log-rotate-rename.rst
51
46
52
- #. Rotate the log file using *one* of the following methods.
47
+ Log Rotation with ``--logRotate reopen``
48
+ ----------------------------------------
53
49
54
- - From the :program:`mongo` shell, issue the :dbcommand:`logRotate`
55
- command from the ``admin`` database:
50
+ .. versionadded:: 3.0.0
56
51
57
- .. code-block:: javascript
52
+ Log rotation with :option:`--logRotate` ``reopen`` closes and opens
53
+ the log file following the typical Linux/Unix log rotate behavior.
58
54
59
- use admin
60
- db.runCommand( { logRotate : 1 } )
55
+ .. include:: /includes/steps/log-rotate-reopen.rst
61
56
62
- This is the only available method to rotate log files on
63
- Windows systems.
57
+ Log Rotation with ``SIGUSR1``
58
+ -----------------------------
64
59
65
- - For Linux systems, rotate logs for a single process by issuing
66
- the following command :
60
+ For Linux and Unix-based systems, you can use the ``SIGURS1`` signal
61
+ to rotate the logs for a single process, as in the following:
67
62
68
- .. code-block:: javascript
63
+ .. code-block:: sh
69
64
70
- kill -SIGUSR1 <mongod process id>
71
-
72
- #. List the matching files again:
73
-
74
- .. code-block:: javascript
75
-
76
- ls /var/log/mongodb/server1.log*
77
-
78
- For results you get something similar to the following. The
79
- timestamps will be different.
80
-
81
- .. code-block:: none
82
-
83
- server1.log server1.log.2011-11-24T23-30-00
84
-
85
- The example results indicate a log rotation performed at exactly
86
- ``11:30 pm`` on ``November 24th, 2011 UTC``, which is the local time
87
- offset by the local time zone. The original log file is the one with
88
- the timestamp. The new log is ``server1.log`` file.
89
-
90
- If you issue a second :dbcommand:`logRotate` command an hour later,
91
- then an additional file would appear when listing matching files,
92
- as in the following example:
93
-
94
- .. code-block:: none
95
-
96
- server1.log server1.log.2011-11-24T23-30-00 server1.log.2011-11-25T00-30-00
97
-
98
- This operation does not modify the
99
- ``server1.log.2011-11-24T23-30-00`` file created earlier, while
100
- ``server1.log.2011-11-25T00-30-00`` is the previous ``server1.log``
101
- file, renamed. ``server1.log`` is a new, empty file that receives
102
- all new log output.
65
+ kill -SIGUSR1 <mongod process id>
103
66
104
67
Syslog Log Rotation
105
68
-------------------
106
69
107
70
.. versionadded:: 2.2
108
71
109
- To configure mongod to send log data to syslog rather than writing log
110
- data to a file, use the following procedure.
111
-
112
- 1. Start a :program:`mongod` with the :setting:`~systemLog.syslogFacility` option.
113
-
114
- #. Store and rotate the log output using your system's default log
115
- rotation mechanism.
72
+ With syslog log rotation, :program:`mongod` sends log data to the syslog
73
+ rather than writing it to a file.
116
74
117
- .. important :: You cannot use :setting:`~systemLog.syslogFacility` with :setting:`systemLog.path`.
75
+ .. include :: /includes/steps/log-rotate-syslog.rst
0 commit comments