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 *