”日夜为你着迷 时刻为你挂念 思念是不留馀地”。 ​​​​

前言
  最近心情大好,那我们就先看个妹子洗洗眼。

想你天色已黄昏
想你天色已黄昏

nginx的log日志一般分为 access.log 和 error.log

  • access.log我是用来记录成功的访问,即有响应状态码的
  • error log 则是记录服务器错误日志
    两个都可以记录页面以及用户浏览器、ip和其他的访问信息之类的

先设置日志格式

1
2
3
4
5
6
7
8
9
10
11
12
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

#$remote_addr 与$http_x_forwarded_for 用以记录客户端的ip地址;
#$remote_user :用来记录客户端用户名称;
#$time_local : 用来记录访问时间与时区;
#$request : 用来记录请求的url与http协议;
#$status : 用来记录请求状态;成功是200,
#$body_bytes_s ent :记录发送给客户端文件主体内容大小;
#$http_referer :用来记录从那个页面链接访问过来的;
#$http_user_agent :记录客户端浏览器的相关信息;

启用日志 :

1
2
3
4
access_log  logs/host.access.log  main;
error_log logs/error.log error;
#日志 日志地址 变量(也不知道该怎么描述,反正我是这么认为)
#确保 logs文件夹存在哦

error_log 级别分为 debug, info, notice, warn, error, crit 默认为crit,从左到右,左边记录的做多,右边最少

crit 记录的日志最少,而debug记录的日志最多。如果你的nginx遇到一些问题,比如502比较频繁出现,但是看默认的error_log并没有看到有意义的信息,那么就可以调一下错误日志的级别,当你调成error级别时,错误日志记录的内容会更加丰富。

重启生效

1
$ nginx -q&&nginx -t&&nginx -s reload

测试下nginx.conf是否配置对了,然后重启生效

日志切割

在上一步完成了日志配置,接下来开始日志切割,不然日志文件一天天累积会很大,然后打开也慢,查看也不方便

这个时候,我就祭出大杀器logrotate,这个东西liunx一般都自带了

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
$ vim /etc/logrotate.d/nginx  
如何没有也会自己生成,保存后会创建

/etc/nginx/logs/*.log {
#log的位置,按自己实际情况来

su root root
#使用root权限 ,如果不使用的话 可能会报权限有关的问题

daily
#每天运行一次

missingok
#如果日志文件丢失,不报错继续执行下一个

rotate 5
#日志保存5天

dateext
#文件后缀是日期格式,也就是切割后文件是:xxx.log-20170506 这样,如果注释掉,切割出来是按数字递增,即前面说的 xxx.log-1 这种格式

compress
#压缩,也就是变成xxx.log-20170506.gz

notifempty
#如果是空文件的话,不转储

sharedscripts
#在所有的日志文件都轮转完毕后统一执行一次脚本。如果没有配置这条指令,那么每个日志文件轮转完毕后都会执行一次脚本。

prerotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
#循环/var/run/nginx.pid 存在 不是中止Nginx的进程,而是传递给它信号重新生成日志,如果nginx没启动不做操作

fi
endscript
}

手动执行切割任务测试一下

1
logrotate -vf  /etc/logrotate.d/nginx

具体返回的懒得复制了,反正你看到执行了log文件,且没error报错就对了,去看看你指定的logs文件,是不是被切割成日期格式了

定时任务corntab
说道这步,真是一把辛酸泪

1
$ crontab -e

第一次运行会让你选择编辑器,强推vim,默认编辑器为nano.切记,不选vim下面就不用看了,因为我也没用过其他编辑器

如果手贱选错,哈哈哈,那就让我救救你个基佬

1
2
$ select-editor
//重新选择编辑器(可千万别再选错了)

添加定时任务

1
2
3
4
5
6
7
8
 $ i
//进入编辑模式

//每天23点59分执行
$ 59 23 * * * /usr/sbin/logrotate -f /etc/logrotate.d/nginx

按键盘ecs //退出编辑模式
:wq! //保存并强制退出

查看是否成功添加定时任务

1
2
3
$ crontab -l
//看看是不是有59 23 * * * /usr/sbin/logrotate -f /etc/logrotate.d/nginx
//有的话就证明已经成功添加到定时文件里了

查看crontab日志
之前少写了,现在补上
运行了一天没个日志简直捉鸡..
后来发现crontab默认不开启的,好吧.我们手动来

  1. 修改rsyslog

    1
    2
    3
    $ sudo vim /etc/rsyslog.d/50-default.conf 

    #cron.* /var/log/cron.log #将cron前面的注释符去掉
  2. 重启rsyslog

    1
    $ sudo service rsyslog restart
  3. 查看crontab日志

    1
    $ less /var/log/cron.log

如果报错说/var/log/cron.log: No such file or directory
是和你说这个文件不存在,没事的,等crontab运行一次就好了.

写这些的目的是为了留个记忆,若是帮到了你,那我也很开心,愿诸君以梦为码,不负韶华~~也别负了眼前人.怪我多嘴了

心中藏之 无日忘之