Contents

刚才去看一个运行了很久的web项目。发现磁盘占用量很大,追查了一下是apache日志。于是记录一下分割过程

本文先说rotatelogs切割(apache自带的工具),后续有补充的其他分割方法我再更新
找到apache配置文件httpd.conf

找到以下内容:

1
2
3
4
5
ErrorLog "logs/error_log"
CustomLog "logs/access_log" common

ErrorLog是错误日志,CustomLog就是访问日志。
日志的路径是一个相对路径,在/usr/local/apache/logs下。

修改为以下内容:

1
2
3
4
CustomLog "|/usr/local/apache/bin/rotatelogs  -l /usr/local/apache/logs/access_%Y%m%d_log 86400" combined

/usr/local/apache2/bin/rotatelogs -l :这个是切割工具。用绝对路径,防止切割工具找不到这个日志。
/%Y%m%d 加上时间戳,四位的年,两位的月,两位的日 86400是秒相当于一天,就以一天为间隔切割。

错误日志跟这个一样,最后不加combined,因为我的错误日志比较小,不做切割

重启所有服务刷新访问几次查看,可以在log目录看到有access_20180815_log这样格式的文件

补充一些概要语法

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
概要
rotatelogs logfile [ rotationtime [ offset ]] | [ filesizeM ]

选项
logfile
它加上基准名就是日志文件名。如果logfile中包含'%',则它会被视为用于的strftime(3)的格式字串;否则,它会被自动加上以秒为单位的.nnnnnnnnnn后缀。这两种格式都表示新的日志开始使用的时间。
rotationtime
日志文件回卷的以秒为单位的间隔时间
offset
相对于UTC的时差的分钟数。如果省略,则假定为0,并使用UTC时间。比如,要指定UTC时差为-5小时的地区的当地时间,则此参数应为-300。
filesizeM
指定回卷时以兆字节为单位的后缀字母M的文件大小,而不是指定回卷时间或时差。

可移植性:下列日志文件格式字串可以为所有的strftime(3)实现所支持,见各种扩展库对应的strftime(3)的手册。

%A 星期名全称(本地的)
%a 3个字符的星期名(本地的)
%B 月份名的全称(本地的)
%b 3个字符的月份名(本地的)
%c 日期和时间(本地的)
%d 2位数的一个月中的日期数
%H 2位数的小时数(24小时制)
%I 2位数的小时数(12小时制)
%j 3位数的一年中的日期数
%M 2位数的分钟数
%m 2位数的月份数
%p am/pm 12小时制的上下午(本地的)
%S 2位数的秒数
%U 2位数的一年中的星期数(星期天为一周的第一天)
%W 2位数的一年中的星期数(星期一为一周的第一天)
%w 1位数的星期几(星期天为一周的第一天)
%X 时间 (本地的)
%x 日期 (本地的)
%Y 4位数的年份
%y 2位数的年份
%Z 时区名
%% 符号'%'本身
Contents