Nginx学习(三) Nginx的日志配置

谁说胖子不能爱 提交于 2020-02-06 02:44:34

1、日志介绍
日志的配置在nginx.conf中
可以为每个server配置不同的日志,如下

server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  a.html index.html index.htm;
        }

这说明 该server, 它的访问日志的文件是 logs/host.access.log ,使用的格式”main”格式.除了main格式,你可以自定义其他格式。
main格式默认:

 #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

2、自定义一个日志格式

自定义日志格式mylog

log_format  mylog '$remote_addr- "$request" '
                     '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';

在server中配置mylog

 server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        access_log logs/mylog.access.log mylog;

        location / {
            root   html;
            index  a.html index.html index.htm;
        }

可以发现mylog.access.log

[root@localhost conf]# curl localhost:80
<html>
<h>welcom visit nginx!!</h>
</html>
[root@localhost conf]# cd ../logs/
[root@localhost logs]# ls
access.log  error.log  mylog.access.log  nginx.pid
[root@localhost logs]# cat mylog.access.log 
127.0.0.1- "GET / HTTP/1.1" 200 43 "-" "curl/7.29.0" "-"

3、通过定时任务完成日志切割
主要目的是实现每天备份一个新的日志文件
编写shell脚本

base_path='/usr/local/nginx/logs'
log_path=$(date -d yesterday +"%Y%m")
day=$(date -d yesterday +"%d")
mkdir -p $base_path/$log_path
mv $base_path/mylog.access.log $base_path/$log_path/mylog.access_$day.log
#echo $base_path/$log_path/access_$day.log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

编写linux定时任务

crontab -e

每天0点1分执行任务

01 00 * * * sh /usr/local/nginx/logs/runlog.sh
systemctl restart crond 
#查看任务
crontab -l
#查看执行日志 
cat /var/log/cron

到了每天0点1分会发现会将之前的日志打包到一个文件夹内,并打开新的mylog.access.log

附 定时任务表达式说明

*  *  *  *  *  command 
分 时 日 月 周 命令 
第1列表示分钟1~59 每分钟用*或者 */1表示 
第2列表示小时1~23(0表示0点) 
第3列表示日期1~31 
第4列表示月份1~12 
第5列标识号星期0~6(0表示星期天) 
第6列要运行的命令 

常用表达式

每五分钟执行  */5 * * * *
 
每小时执行    0 * * * *
 
每天执行      0 0 * * *
 
每周执行      0 0 * * 0
 
每月执行      0 0 1 * *
 
每年执行      0 0 1 1 *


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!