Linux 按时间段查询大日志表信息及按日期分割
admin
2023-02-27 07:02:13
0

#查nohup.out日志表2019-11-18 20:00:00 - 2019-11-18 22:00:00这两小时的记录(前提是日志里有这样的格式时间),并生成exchange_update.log

cat nohup.out | sed -n '/2019-11-18 20:00:00/,/2019-11-18 22:00:00/ p' > exchange_update.log


-------------------------------------------------------------------------------

2020-02-31 18:21

-------------------------------------------------------------------------------

日志查询

场景:access.log日志是一个大文件,含有所有日期的信息。但需要查询某天某时的日志时,直接grep和sed都很耗时,所以需要先将该段日期的日志保存再查询。


acess.log日志格式:

[12/Feb/2020:15:40:46 +0800] -- 101.20.18.75 -- 57197 "POST /api?apiCode=meu_mksm:info HTTP/1.1" 200 "0.011" -- "0.011" -- "gdn.cn 154.121.10.206 9443 localhost" - "https://gdn.cn:9443/view/xtgl/mksm_view.html?apiCode=meu_mksm:info&code=M9502"


nginx.conf的access.log格式设置:

'[$time_local] -- $remote_addr -- $remote_port "$request_method $request_uri $server_protocol" $status "$upstream_response_time" -- "$request_time" -- "$host $server_addr $server_port $server_name" - "$http_referer"';


先按日期查询,并将结果保存

sed -n '/12\/Feb\/2020:15:0./,/12\/Feb\/2020:16:0./p' acess.log > 202021215.log #加\是为了反编译,避免解析器将/符号当做编译符号

sed:

-n, --quiet, --silent

              suppress automatic printing of pattern space # 抑制自动打印模式空间


查询202021215.log中502响应码

cat  202021215.log | grep "^502$"   #查找有单独502字样的段

运行结果:NULL #因为日志里本来就没有

grep:

^ 指匹配字符串在行首

$ 指匹配字符串在行尾


精确查询:

sed -n '/2020-02-12 15:00:00/,/2020-02-12 16:00:00/p'  ris.log

运行结果:NULL

坑点:

如果开始时间日志里面是没有的,那么查询结果为空,比如开始时间2020-02-12 15:00:00日志里没有

如果结束时间日志里面是没有的,查询的结果就是开始时间到最后的全部日志


模糊查询:

sed -n '/2020-02-12 15:0./,/2020-02-12 16:0./p'  ris.log  #从日志里有2020-02-12 15点0第一个字样的开始查,直到有第一个2020-02-12 16:0字样的结束



日志分割

此部分转载至:https://blog.csdn.net/feinifi/article/details/78455563

场景:access.log所有日期的日志都集中在这里,查找问题不方便,需要将该日志按日期分割出来。


让日志每天按日期保存成单个文件,脚本

#!/bin/bash

YESTERDAY=$(date -d "yesterday" +"%Y-%m-%d")

LOGPATH=/usr/local/openresty/nginx/logs/

PID=${LOGPATH}nginx.pid

mv ${LOGPATH}access.log ${LOGPATH}access-${YESTERDAY}.log

mv ${LOGPATH}error.log ${LOGPATH}error-${YESTERDAY}.log

kill -USR1 `cat ${PID}`


变更脚本为可执行文件,并将脚本作为定时任务启动脚本,放入crontab中。

chmod +x nginx_logback.sh


crontab -e

#!/bin/bash

0 0 * * * /bin/bash /root/nginx_logback.sh



相关内容

热门资讯

全美汽油均价较伊朗战事前上涨5... 新华社北京5月7日电 美国汽车协会5日发布数据说,美国普通汽油当天平均零售价为每加仑4.48美元,较...
中国经济数据观丨十组数据看假日... 设计:穆问春文案:底东娜来源:交通运输部、商务部、文化和旅游部、公安部、国家移民管理局等
新疆政协原副主席金之镇被“双开... 经中共中央批准,中央纪委国家监委对新疆维吾尔自治区政协原党组成员、副主席金之镇严重违纪违法问题进行了...
国际足联秘书长级高管计划访华,... 据《五星体育》报道,国际足联有“秘书长级别的高管”计划近期访华,世界杯版权谈判或迎转机。距离2026...
茅台集团总经理王莉已回归工作,... 5月6日晚,据贵州茅台微信公众号消息,当日,“五一”假期后的首个工作日,茅台集团党委书记、董事长陈华...
一句“将军”,他喊了67年 澎湃新闻记者 何锴 柳婧文 编辑 彭玮 设计 王璐瑶9岁爱上象棋,一句“将军”,伴随着他此后的人生。...
探秘AI新势力|一台国产科学计... 开栏的话: “十五五”规划纲要明确提出,全面实施“人工智能+”行动。从新质生产力构建到现代化产业体系...
来自毫克级月球样品,铈嫦娥石发... 近日,我国宣布发现三种月球新矿物:铈嫦娥石、镁嫦娥石、铈镁嫦娥石。发现新矿物,究竟难在哪里?科研团队...
7个项目停6个?“智慧城市”项... 7个项目停6个?“智慧城市”项目为啥“投入即浪费” 西部某县“智慧城市”综合管理中心内散落的办公...
对标OpenClaw!谷歌秘密... 快科技5月6日消息,据媒体报道,谷歌正加快进军“代理型AI”(Agentic AI)赛道。多位知情人...