今天学习使用apache系统自带的rotatelogs工具对日志进行截断处理。
一,修改文件httpd.conf
复制代码代码示例:
CustomLog "logs/access.log" common 原来的样子
ErrorLog "logs/error.log"原来的样子 CustomLog "|bin/rotatelogs /var/logs/logfile 86400" common 修改后的样子 CustomLog "|bin/rotatelogs /var/logs/logfile 5M" common 修改后的样子 ErrorLog "|bin/rotatelogs /var/logs/errorlog.%Y-%m-%d-%H_%M_%S 5M" 二,重启apache服务,在指定的日志目录中验证。
三:语法分析
此配置会在错误日志大小增长到5兆字节时滚动该日志,日志文件名后缀会按照如下格式创建:errorlog.YYYY-mm-dd-HH_MM_SS 。
四:文件名称格式
errorlog.%Y-%m-%d-%H_%M_%S-------------------errorlog.YYYY-mm-dd-HH_MM_SS
%A 星期名全称(本地的) %a 3个字符的星期名(本地的) %B 月份名的全称(本地的) %b 3个字符的月份名(本地的) %c 日期和时间(本地的) %d 2位数的一个月中的日期数 %H 2位数的小时数(24小时制) %I 2位数的小时数(12小时制) %j 3位数的一年中的日期数 %M 2位数的分钟数 %m 2位数的月份数 %p am/pm12小时制的上下午(本地的) %S 2位数的秒数 %U 2位数的一年中的星期数(星期天为一周的第一天) %W 2位数的一年中的星期数(星期一为一周的第一天) %w 1位数的星期几(星期天为一周的第一天) %X 时间(本地的) %x 日期(本地的) %Y 4位数的年份 %y 2位数的年份 %Z 时区名 %% 符号"%"本身 接下来介绍,按日期生成apache日志文件及限制apache日志文件大小的方法。
需要用到apache自带的rotatelogs小工具
参数解释:
位的".nnnnnnnnnn"后缀。这两种格式都表示新的日志开始使用的时间。
应为"-300"。
例子:
复制代码代码示例:
ErrorLog "|/data/apache/bin/rotatelogs 日志存放目录/%Y%m%d_error.log 86400 480"
访问日志:
复制代码代码示例:
CustomLog "|/data/apache/bin/rotatelogs 日志存放目录/%Y%m%d_access.log 86400 480" common
其中: 扩展:可以写个脚本定时删除日志文件,只保留几天的日志,如果网站访问量比较大,一天会生成几十上百M甚至更大的日志文件,既占硬盘又影响服务器性能。
2、按大小滚动日志文件:
复制代码代码示例:
ErrorLog "|/data/apache/bin/rotatelogs -l 日志存放目录/%Y%m%d_error.log 5M"
访问日志:
复制代码代码示例:
CustomLog "|/data/apache/bin/rotatelogs -l 日志存放目录/%Y%m%d_access.log 5M" common
当日志文件达到5M时,滚动该日志文件。 另外,说下apache日志管理的相关知识。
web服务器日志轮循的方法,常用的有如下三种:
1,利用Linux系统自身的日志文件轮循机制:logrotate;
2,利用apache自带的日志轮循程序rotatelogs; 3,使用在apache的FAQ中推荐发展已经比较成熟的一个日志轮循工具cronolog。
这里介绍下apache自带的日志轮循程序rotatelogs,并用shell脚本定期删除日志文件,只保留近3天的文件,以免日志文件占满磁盘空间。
复制代码代码示例:
ErrorLog /var/log/httpd/error_log
CustomLog "|/usr/local/apache2/bin/rotatelogs /var/log/httpd/access_log 86400 400M" combined
86400 ---日志滚动的时间是一天
然后,建立清除日志文件的shell脚本,文件名为clean_log
复制代码代码示例:
#! /bin/bash
logdir=/var/log/httpd cd ${logdir} declare -i filesum=`ls access_log.* | wc -l` declare -i delnum=$filesum-3 if [ "${delnum}" -ge 1 ];then rm -rf `ls -tr access_log.* | head -${delnum}` fi
#加上执行权限
复制代码代码示例:
chmod 755 clean_log
保留最近3天的日志文件。
创建自动化任务:
复制代码代码示例:
01 04 * * * /usr/local/crontab/clean_log
(责任编辑:IT) |