Linux:nginx或者Apache 每天自动分割日志文件

Nginx日志的指令主要有两条:
log_format,设置日志的格式
access_log,指定日志文件的存放路径、格式和缓存大小
两条指令在Nginx配置文件中的位置可以在http{……..}之间,也可以在虚拟主机之间,即server(…….)两个大括号之间。

Nginx的日志文件没有类似Apache的rotate功能,产生的日志都是存在一个文件,随着网站运行时间越长,日志文件的大小也在不断增长,这对运维人员想分析当天日志非常的不方便,如果不定期清理,很快就是达到了10G级别,下载和分析都极其困难,所以需要每天把日志文件分割出来,并以时间命名。

下面以wdcp这个环境为例,进行说明。通过对ngnix的vhost文件指定网站的日志存放位置的配置,把日志放在/www/web_logs/kzyanyi_com/下面。

创建日志分割脚本

1、登录SSH,创建cut_logs.sh文件

2、粘贴下面代码到cut_logs.sh,并保存。注意wdcp默认的nginx安装路径。

Nginx不支持像Apache 一样使用cronolog来轮转日志,但是可以采用以下方式来实现日志文件的切割,比如:

mv /data1/logs/access.log /data1/logs/20111030.log
kill -USR1 Nginx主进程号

通过mv命令将日志文件重命名为/data1/logs/20111030.log,然后发送kill -USR1信号给Nginx的主进程号,让Nginx重新生成一个新的日志文件/data1/logs/access.log。如果想每天定时切割日志,还须要借助crontab。我们可以写一个按天切割的日志,按年、月
份目录存放日志的shell脚本:

以上脚本执行的操作是在日志文件夹下面创建用年月命名的目录,比如/www/web_logs/kzyanyi_com/2015/08/,然后,把原来的日志文件移动并命名为/www/web_logs/kzyanyi_com/2015/08/access_20150830.log文件,然后再发送kill -USR1 信号给Nginx主进程,重新生成一个日志文件。

注意第一行 #!/bin/bash 不是注释,而是定义使用哪种sh解释器来解释脚本。

3、添加cut_logs.sh执行权限

或者直接对这个脚本目录下的文件添加执行权限

4、设置cut_logs.sh启动时间

执行命令crontab -e进入编辑状态
添加如下代码,每天0点01分执行任务。

这样每天定时分割日志文件就设置成功了。当然如果你担心日志文件占太多空间,还可以执行压缩tar,并设置删除多少天前的日志文件。

必要的话,重启nginx和cron服务:

5、以上方法只能对单个日志文件进行分割操作,还有更高级一点的方法,批量分割操作日志文件,并压缩为rar文件,然后删除源日志文件。

同样记得给这个sh脚本文件授予执行权限

测试发现,队列执行完了,并没有按照设计的切割和压缩,排查corntab的日志也没发现什么错误,尝试直接执行这个脚本:

报错:

经过排查和学习,原来我的这个脚本文件是在windows环境用editplus创建并通过sftp上传到linux服务器中,会导致格式冲突:脚本文件是DOS格式的,即每一行的行尾以rn来标识, 使用vi编辑器打开脚本, 运行:

可以看到DOS或UNIX的字样。 使用set ff=unix把它强制为unix格式的,然后存盘退出。 即可。还有一种方法,通过 dos2unix 命令转换格式,由于默认环境没有安装这个命令,需要下载安装:

安装完成后,执行命令,把脚本目录所有脚本文件进行格式转化,一了百了:

经过格式转化后的sh文件,再用editplus在windows环境编辑上传,就不会有格式问题了。

 


CentOS Linux系统下apache日志文件设置

引言:

Apache默认安装下,日志记录只有一个文件,时间久了之后,这个文件会变的很大,管理员要想查看分析日志,光打开日志就要花费很长时间,甚至还会影响服务器运行。

下面教大家设置apache,让服务器每天单独生成一个日志文件,这样管理、分析日志会方便很多。

vi /etc/httpd/conf/httpd.conf  #编辑文件
#ErrorLog logs/error_log  #注释此行,添加下面这行

#CustomLog logs/access_log common  #注释此行,添加下面这行
CustomLog "|rotatelogs /var/log/httpd/access_log%Y%m%d.log 86400 480" common  #每天单独生成一个日志文件
扩展:如果想禁止Apache日志文件,可以设置如下

 

你可能感兴趣的:(PHP)