nginx复习002--日志

—–日志

–网站记录登录日记有什么用?
1.可以统计用户多长时间登录一次,使用什么浏览器,在什么地点登录的
2.检查用户有没有异常登录的情况(如异地登录,可能是被盗号)

–nginx的日志功能
统计和排错
统计:
1.统计网站被访问多少次(服务器每次收到请求,就把这些信息记录成日志)
2.看用户主要使用哪一种浏览器(记录浏览器发送的user_agent)
3.统计从哪个城市来的用户比较多(通过ip地址定位地理位置)
排错:
1.当程序中的某些操作,如果执行失败了,将错误记录下来,以便于发现问题及时修正
2.记录可疑的日志,判读网站是否遭到攻击或入侵了

nginx日志分访问日志和错误日志

—–访问日志
nginx会将收到的客户端每次的请求信息记录下来,保存到访问日志中

–访问日志记录的信息
用户ip地址 访问时间 请求方式 响应状态码 跳转来源 终端信息等

–访问日志的配置
两个重要的指令
log_format 配置访问日志的格式
access_log 记录访问日志

–定义日志的格式 log_format

syntax: log_format 格式名称 格式配置字符串
context(语境 上下文): http

$xxx 内置变量

–指定日志的保存方式 access_log

syntax: access_log 文件路径 格式名称 [保存选项]
context: http server location ‘if in location’ limit_except

–例子

log_format mylog '[ip:] $remote_addr [time:] $time_local [user_agent:] "$http_user_agent"';
access_log logs/mylog/mylog.log mylog buffer=2k flush=5s;

–#buffer 设置在内存缓冲区中的大小(达到这个大小以后,再写入)
–#flush 设置保存在内存缓冲区中的最大实际(达到这个时间以后,再写入)
(buffer开启时,如果达到flush时间或者执行reopen或者停止nginx,就会提前写入)
–#mylog目录不存在,需要手动创建

–访问日志的关闭
access_log off
优点:不记录日志,提高了运行效率
缺点:不利于统计和排错

—–错误日志
错误日志用于记录nginx从启动时开始发生的错误信息、调试信息等

–错误日志的配置
error_log指令

syntax: error_log 文件路径 [错误级别]
context: main http mail stream server location

–常用(8个)错误级别 (顺序:从详细到简略,从轻到严重)
debug 调试
info 消息、信息
notice 提醒
warn 警告、预警
error 错误
crit 关键、严重
alert 警惕、警报
emerg 紧急
(如果指定了某个级别,记录的错误信息中会包含它本身和所有更严重的级别)

–如果省略错误级别,默认使用error级别
–注意有个特殊情况,即使设置为error级别,也有少部分其他级别的信息被记录下来

–错误日志的关闭
nginx不推荐关闭错误日志,没有直接提供关闭功能
可以通过/dev/null 设备将日志信息丢弃
error_log /dev/null
“/dev/null”是linux提供的一个虚拟设备,用于将所有输入给它的内容丢弃

—–日志文件的切割

–为啥需要对日志文件切割
随着网站的访问量不断增加.如果时间长了.一个日志文件的体积会越来越大
不利于读取分析.为了避免日志文件的体积无限制的增加,可以切割成多个日志文件
ex:按天进行切割

–手动切割日志
原理:现将当前日志文件重命名,然后将新日志按照原来的文件名创建文件进行写入
步骤:
1.重名了当前日志文件
(备注:重命名后,日志文件会继续写入到已经重命名后的文件中)
2.执行reopen重新启动nginx重新打开日志,会按原来文件名自动创建日志文件

–自动切割日志
原理:将手动切割的操作命令保存到一个shell脚本中,然后利用linux的计划任务(crontab),实现每隔一段时间,调用一次脚本
步骤:
1.创建autolog.sh

#! /bin/bash
#日志文件路径
logs_path = "usr/local/nginx/logs/mylog"
#备份日志文件
mv $logs_path/mylog.log  $logs_path/`date + "%Y%m%d%H%M"`.log
#重新打开日志文件
/usr/local/nginx/sbin/nginx -s reopen

–(date -d yesterday + “%Y%m%d”) 还可以用-d yesterday获取昨天时间
2.利用crontab自动调用脚本
执行crontab -e 进入计划任务编辑模式
(或者编辑/var/spool/cron/root,然后执行service crond reload)
配置如下:
0 0 * * * /usr/local/nginx/logs/mylog/autolog.sh >/dev/null 2>&1
–分钟 小时 天 月 星期 脚本路径 输出 重定向
–*代表”每”
– >/dev/null 屏蔽标准输出(将标准输出重定向到空设备)
– 2>&1 屏蔽标准错误信息(2=标准错误 1=标准输出 &表示等同,后面跟数字)

–crontab文件格式在linux编程中学过了

crontab -e 编辑计划任务
crontab -l 显示计划任务
crontab -r 删除计划任务

猜你喜欢

转载自blog.csdn.net/eebaicai/article/details/81155229