-
Notifications
You must be signed in to change notification settings - Fork 0
/
logrotate.html
167 lines (130 loc) · 5.93 KB
/
logrotate.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
<!DOCTYPE html>
<html lang="en">
<head>
<link href="/images/favicon.png" rel="icon">
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>trvrm.github.io</title>
<link rel="stylesheet" type="text/css" href="/theme/css/flatly.min.css" />
<link rel="stylesheet" type="text/css" href="/theme/css/style.css" />
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" />
<link href="/theme/css/pygments/tango.css" rel="stylesheet">
<meta name="tags" content="logrotate" />
<meta name="tags" content="linux" />
</head>
<body>
<section class="hero is-primary">
<!-- Hero header: will stick at the top -->
<div class="hero-head">
<nav class="navbar ">
<div class="navbar-menu is-active">
<div class="navbar-end">
<a class="navbar-item" href="https://twitter.com/trvrm">
<span class="icon"> <i class="fa fa-twitter"></i> </span>
twitter
</a>
<a class="navbar-item" href="https://github.com/trvrm">
<span class="icon"> <i class="fa fa-github"></i> </span>
github
</a>
</div>
</div>
</div>
</div>
<!-- Hero content: will be in the middle -->
<div class="hero-body">
<div class="container has-text-centered">
<p class="title is-1">trvrm.github.io</p>
</div>
</div>
<div class="hero-foot">
<nav class="navbar ">
<div class="navbar-brand is-active">
<a href="/" class="navbar-item" >
trvrm.github.io
</a>
</div>
<div class="navbar-menu is-active">
<div class="navbar-start">
<a class="navbar-item " href="/category/database.html">Database</a>
<a class="navbar-item " href="/category/software.html">Software</a>
<a class="navbar-item is-active " href="/category/systems.html">Systems</a>
</div>
</div>
</nav>
</div>
</section>
<section class="section">
<div class="container has-text-centered">
<p class="title is-3">
<a href="/logrotate.html" rel="bookmark" title="Permalink to logrotate">
logrotate
</a>
</p>
<p class="subtitle is-5">
Thu 01 January 2015
</p>
</div>
<hr>
<div class="content ">
<p>I have a large, complex <a class="reference external" href="/postfix.html">mailing system</a> that processes
a significant amount of data every hour. While I'm developing it, I want to know
what it's doing, and whether it's having any problems. So I use the excellent
python <a class="reference external" href="https://docs.python.org/2/library/logging.html">logging</a> library to produce comprehensive monitoring data.</p>
<p>The only problem is that these log files can get pretty big. And because I don't
know ahead of time when I'm going to need to hunt through them, I tend to leave
the logging system in a fairly verbose state.</p>
<p>Enter <a class="reference external" href="http://www.thegeekstuff.com/2010/07/logrotate-examples/">logrotate</a>. This is a standard service on Ubuntu that regularly rotates
your log files, throwing away old data, compressing middle-age data, and leaving
young log files fresh and accessible. Thus you are protected from
runaway log file growth and nasty calls in the middle of the night from your
monitoring service telling you that your server just died because the hard
drives were full.</p>
<p>A default ubuntu installation comes with logrotate already set up for various services.
If you don't have it, install it with <code class="code">
apt-get install logrotate</code>
, and
then it's mostly just a question of copying a file from <code class="code">
/etc/logrotate.d/</code>
and modifying it according to your needs.</p>
<p><code class="code">
vi /etc/logrotate.d/myservice</code>
</p>
<div class="highlight"><pre><span></span>/var/log/myservice/*.log <span class="o">{</span>
rotate <span class="m">7</span>
daily
compress
missingok
notifempty
<span class="o">}</span>
</pre></div>
<p>And that's it! The actually invocation of the <code class="code">
logrotate</code>
command will
get triggered regularly by a script in /etc/cron.daily</p>
<p>You can also <strong>force</strong> a rotation, a useful option when testing out a new configuration,
via</p>
<div class="highlight"><pre><span></span>logrotate -f /etc/logrotate.d/myservice
</pre></div>
<p>One quick word of warning: if you're using the python <a class="reference external" href="https://docs.python.org/2/library/logging.html">logging</a> library, then
you'll want to use the <code class="code">
WatchedFileHandler</code>
class. If the logfile gets
rotated out while it's in use, WatchedFileHandler will notice this, close the file
stream and open a new one.</p>
</div>
</section>
<footer class="footer">
<div class="container">
<div class="content has-text-centered">
<p>
Powered by <a href="http://getpelican.com/">Pelican</a>, <a href="http://python.org">Python</a>,
and <a href="http://bulma.io/">Bulma</a>
</p>
<p class="subtitle is-6">Ubi Caritas et Amor, Deus Ibi Est</p>
</div>
</div>
</footer>
</body>
</html>