Loading [MathJax]/jax/output/CommonHTML/jax.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Nginx日志文件格式及切割日志文件

Nginx日志文件格式及切割日志文件

作者头像
星哥玩云
发布于 2022-07-03 09:50:47
发布于 2022-07-03 09:50:47
1.4K0
举报
文章被收录于专栏:开源部署开源部署

作为Web服务器而言,日志是必不可少的也是需要经常查看的。此篇就来介绍下如何自定义Nginx中的日志格式以及使用crontab计划任务来做到每天切割一次日志文件从而做到方便管理。

Nginx中日志文件是由log_format这个指令来定义的,它的语法如下:

log_format    name    format ##    name:指的是日志格式的名称(后面调用) ##    format:设置日志具体格式的

在Nginx中有自己默认的日志格式,如下内容:

#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

客户端的ip地址(如果中间有代理服务器那么这里显示的ip就为代理服务器的ip地址)

$remote_user

用于记录远程客户端的用户名称(一般为“-”)

$time_local

用于记录访问时间和时区

$request

用于记录请求的url以及请求方法

$status

响应状态码

$body_bytes_sent

给客户端发送的文件主体内容大小

$http_user_agent

用户所使用的代理(一般为浏览器)

$http_x_forwarded_for

可以记录客户端IP,通过代理服务器来记录客户端的ip地址

$http_referer

可以记录用户是从哪个链接访问过来的

有时候可能就算启用了$http_x_forwarded_for也无法获取客户端的ip地址详情请参考此篇博文:Nginx 日志获取不到远程访问ip问题解决  http://www.linuxidc.com/Linux/2014-12/110990.htm

通过参考上述内容可以快速的定制出来一个日志格式了,就在上一次做的虚拟主机里增加吧。

上次并没有自定义日志格式并且在限制访问的状态页面也没有启用访问日志,那就写一个吧。

        log_format access 'remote_user "

                        'http_referer'

                        '"

添加的名称为access 日志记录了ip、用户、时间、相应方法及页面、状态码、从哪个链接过来的、用户代理、如果中间有代理也从代理获取用户ip,然后将状态页面的访问日志打开并且给一个文件路径(此文件可以不存在,目录必须存在)然后在路径后面指定好我们刚才设置的名称,也将正常页面的访问日志引用自定义的日志格式。(原来是没有设置名称的,那么就为默认格式)

定义完成后看下是否配置正确

nginx -t

nginx给了一个警告信息,警告我们log_format可能使用在/usr/local/nginx/nginx.conf中的http等级下,如果要修复这个警告按照以下方法即可解决。

将我们的自定义信息放入到nginx.conf配置文件中的http里面(一定要在虚拟主机的配置文件中删除自定义的log_format):

再次检查即可正常使用

将原来的access.log文件删除或者重命名,然后重读配置文件

cd /web/vhost/test1/logs/ mv test1.access.log access.log.bak nginx -s reload    #重读配置文件

然后访问下看看日志文件是否和我们自定义的内容一样:

状态页面的访问日志里记录了ip、用户名、时间、请求方法、、访问的页面、页面状态码(由于定义的时候没有加“-”导致了效果不太好)、客户端使用的浏览器、以及代理服务器(本机访问的没有代理服务器所以就为-)

自定义日志就结束了,接下来就是切割日志文件并且每天保存一份当天的日志文件方法如下:

首先将原来的日志文件重命名

mv test1.access.log test1.2014-12-29.log

nginx  -s reload

这样就可以做到日志文件的切割。如果要每天自动保存的话就要基于crontab来管理了。写个脚本吧

#!/bin/bash # # vhost=test1  ##定义虚拟主机的目录名 log_path=/web/vhost/logs        #指定日志文件要保存位置 access_log_path=/web/vhost/${vhost}/logs    #指定access日志所在路径 mkdir -p ${log_path}/$(date -d "yesterday" +"%y")/$(date -d "yesterday" +%m)/        ## 创建日期目录,date -d "yesterday" +"%y"获取年份后面那个是获取月份 mv ${access_log_path}/${vhost}.access.log ${log_path}/$(date -d "yesterday" +"%y")/$(date -d "yesterday" +%m)/$(date -d "yesterday" +%d).${vhost}.access.log  ## 这里将访问日志文件移动到备份的目录中如:/web/vhost/logs/14/12/28.test1.access.log nginx -s reload        ##这里我的nginx在编译的时候使用--sbin-path=/usr/sbin/nginx这个参数了所以我可以直接使用nginx如果没有使用此参数请一定要将你的nginx安装目录下的sbin目录添加至系统环境变量中。

然后将这个脚本文件放到nginx的配置目录下添加定时计划

mkdir /usr/local/nginx/bin && mv logs.sh /usr/local/nginx/bin/logs.sh crontab -e 00 00 * * * /bin/bash /usr/local/nginx/bin/logs.sh

这样在每天的夜晚12点就会自动创建备份文件了,如果要对错误日志也每天备份的话按照上面的内容修改即可。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
说清Nginx的配置结构,实现Nginx日志切割!
上一片老猫和大家分享了Nginx的相关的一些概念,以及一些基础的Nginx的模型,本篇开始,和大家一起探讨一下Nginx的一些配置信息,讲清楚所以然,为什么要这么配置,这么配置有什么作用,这是本节的初衷。
程序员老猫
2021/01/06
8110
说清Nginx的配置结构,实现Nginx日志切割!
Nginx从入门到放弃05-访问日志与日志切割
当我们访问nginx服务时,nginx会记录日志,nginx日志分两种,一种是访问日志,一种是错误日志,访问日志记录在”access.log”文件中,错误日志记录在”error.log”文件中。
星哥玩云
2022/06/24
5510
Nginx从入门到放弃05-访问日志与日志切割
03 . Nginx日志配置及日志切割
access_log /usr/local/nginx/logs/b_test/access.log;
iginkgo18
2020/09/27
2.6K0
NGINX日志切割
Nginx日志对于统计、系统服务排错很有用。 Nginx日志主要分为两种:access_log(访问日志)和error_log(错误日志)。 access.log 记录哪些用户,哪些页面以及用户浏览器,IP等访问信息; error.log 记录服务器错误的日志;
云计算小黑
2022/12/28
9100
NGINX日志切割
linux学习第四十五篇:Nginx访问日志,Nginx日志切割,静态文件不记录日志和过期时间
Nginx访问日志 日志格式 vim /usr/local/nginx/conf/nginx.conf //搜索log_format 下图中就是Nginx的日志格式: combined_r
用户1215343
2018/02/05
1.1K0
linux学习第四十五篇:Nginx访问日志,Nginx日志切割,静态文件不记录日志和过期时间
CentOS下Nginx配置Web访问日志并结合Shell脚本定时切割
在一个成熟的WEB系统里,没有日志管理是不可以的,有了日志,可以帮助你得到用户地域来源、跳转来源、使用终端、某个URL访问量等相关信息;通过错误日志,你可以得到系统某个服务或server的性能瓶颈等。因此,将日志好好利用,你可以得到很多有价值的信息。
星哥玩云
2022/07/26
6220
CentOS下Nginx配置Web访问日志并结合Shell脚本定时切割
保姆级Nginx日志配置文件总结
Nginx服务器日志相关指令主要有两条:一条是log_format,用来设置日志格式;另外一条是access_log,用来指定日志文件的存放路径、格式和缓存大小,可以参加ngx_http_log_module。一般在Nginx的配置文件的日志配置(/usr/local/nginx/conf/nginx.conf)。
兔云小新LM
2023/03/24
2.8K0
Nginx的日志管理和用定时任务完成日志切割
#log_format main '$remote_addr(远程IP) - $remote_user(远程用户) [$time_local](访问时间) "$request"(请求方式) '
星哥玩云
2022/07/04
6990
Nginx的日志管理和用定时任务完成日志切割
初识nginx基础篇-日志管理和切割
Nginx日志主要分为两种,访问日志和错误日志。两种日志可以在http和server模块中配置,nginx有一个非常灵活的日志记录模式。每个级别的配置可以有各自独立的访问日志。日志格式通过log_format命令来定义
后端技术探索
2018/08/09
1.2K0
nginx日志格式分析
这其中有个$http_x_forworded_for ,当前端有代理服务器时,设置web节点记录客户端IP,同时代理服务器也需要进行相关http_x_forworded_for的配置
全栈程序员站长
2022/08/22
1.9K0
Nginx配置中的log_format用法梳理(设置详细的日志格式)
nginx服务器日志相关指令主要有两条:一条是log_format,用来设置日志格式;另外一条是access_log,用来指定日志文件的存放路径、格式和缓存大小,可以参加ngx_http_log_module。一般在nginx的配置文件中日记配置(/usr/local/nginx/conf/nginx.conf)。 log_format指令用来设置日志的记录格式,它的语法如下: log_format name format {format ...} 其中name表示定义的格式名称,format表示定义的格式
洗尽了浮华
2018/01/22
4.3K0
玩转Nginx服务器,怎能不懂Nginx的配置和优化?
Nginx的配置文件默认在Nginx程序安装目录的conf目录下,主配置文件为nginx.conf,假设你的Nginx安装在/usr/local/webserver/nginx目录下,那么默认的主配置文件为/usr/local/webserver/nginx/nginx.conf,下面的代码是Nginx作为Web Server的完整配置示例
用户3587585
2021/09/08
9650
玩转Nginx服务器,怎能不懂Nginx的配置和优化?
你真的了解Nginx日志模块的使用?
Nginx日志主要分为两种:access_log(访问日志)和error_log(错误日志)。Nginx日志主要记录以下信息:
一个风轻云淡
2023/09/29
8350
nginx日志配置
日志对于统计排错来说非常有利的。本文总结了nginx日志相关的配置如access_log、log_format、open_log_file_cache、log_not_found、log_subrequest、rewrite_log、error_log。 nginx有一个非常灵活的日志记录模式。每个级别的配置可以有各自独立的访问日志。日志格式通过log_format命令来定义。ngx_http_log_module是用来定义请求日志格式的。
用户5640963
2019/07/26
1.3K0
12.10 Nginx访问日志
Nginx访问日志目录概要 日志格式 vim /usr/local/nginx/conf/nginx.conf //搜索log_format $remote_addr客户端IP(公网IP) $http_x_forwarded_for代理服务器的IP $time_local服务器本地时间 $host访问主机名(域名) $request_uri访问的url地址 $status状态码 $http_refererreferer $http_user_agentuser_agent 除了在主配置文件ngi
运维小白
2018/02/06
9050
【NGINX入门】13.Nginx日志详解
Nginx日志对于统计、系统服务排错很有用。Nginx日志主要分为两种:access_log(访问日志)和error_log(错误日志)。通过访问日志我们可以得到用户的IP地址、浏览器的信息,请求的处理时间等信息。错误日志记录了访问出错的信息,可以帮助我们定位错误的原因。本文将详细描述一下如何配置Nginx日志。
辉哥
2021/02/05
11.4K0
【NGINX入门】13.Nginx日志详解
Nginx 日志格式配置介绍
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
授客
2019/09/11
2.9K0
Nginx入门学习
nginx 是HTTP和反向代理服务器,邮件代理服务器和通用TCP/UDP代理服务器。总之一句话,nginx很火很牛逼就对了。
Johnson木木
2020/06/16
3430
nginx 日志管理「建议收藏」
#access_log logs/host.access.log main;
全栈程序员站长
2022/09/01
8610
Nginx日志配置
众所周知,线上如果出现事故我们通常都是查看日志去进行问题定位并且进行修复。使用好Nginx日志有利于我们线上进行修复异常问题。在Nginx中日志主要分为两种:access_log(访问日志)和error_log(错误日志)。通过查看access_log我们可以查看用户ip,浏览器信息及请求时间等信息,通过查看error_log我们可以查看线上出错的具体信息,可以帮助我们定位异常的原因。本篇文章主要带领大家详细了解Nginx如何配置日志。本文将会涉及到的日志配置指令:
创译科技
2019/09/06
1.4K0
Nginx日志配置
相关推荐
说清Nginx的配置结构,实现Nginx日志切割!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档