首页 > 系统相关 >Nginx日志切分脚本

Nginx日志切分脚本

时间:2024-08-10 22:40:05浏览次数:8  
标签:LOG 切分 days Nginx PROCESSED FILE 日志 原文件

因为学习初期都是习惯自己去解决问题没有使用工具切分日志,所以当时写了一个根据天数日志切分脚本,现在记录下。


LOG_FILE="/data/log/nginx/filter.access1.log"  
PROCESSED_LOG_FILE="/data/log/nginx/filter.access.log" 

month=$(LC_ALL=C date "+%b")
year=$(date "+%Y")

days=""
for i in {0..1}
do
  dayf=$(date -d "$i days ago" +%d)
  day="$dayf/$month/$year"

  if [ -z "$days" ]
  then
    days="$day"
  else
    days="$days|$day"
  fi
done

echo $days

grep -E $days "$LOG_FILE" > "$PROCESSED_LOG_FILE"  

# 检查新文件是否非空  
if [ -s "$PROCESSED_LOG_FILE" ]; then  
    # 如果新文件非空,询问用户是否替换原文件  
    read -p "新文件已生成且非空,是否替换原文件? (y/n) " choice  
    if [[ "$choice" == "y" || "$choice" == "Y" ]]; then  
        mv "$PROCESSED_LOG_FILE" "$LOG_FILE"  
        echo "日志文件已更新,所有包含2023的行已被删除。"  
    else  
        echo "未替换原文件,处理后的内容已保存在$PROCESSED_LOG_FILE"  
    fi  
else  
    echo "没有行被删除,原文件保持不变。"  
fi

当然如果需要安装工具切分日志的话,可以使用logrotate工具。

标签:LOG,切分,days,Nginx,PROCESSED,FILE,日志,原文件
From: https://www.cnblogs.com/air-liyan/p/18352878

相关文章

  • 使用go+gin编写日志中间,实现自动化收集http访问信息,错误信息等,自动化生成日志文件
    1.首先在logger包下点击查看代码packageloggerimport( "fmt" "io" "net/http" "os" "path" "runtime/debug" "time" "github.com/gin-gonic/gin" "github.com/sirupsen/logrus&q......
  • Ubuntu 通过 docker 安装 Nginx 镜像 + 创建并运行 nginx01 容器
    一、安装nginx:精简版镜像1.查找有什么类型的nginx镜像yammie@my-pc>/home/yammie$dockersearchnginx2.下载精简版nginx镜像yammie@my-pc>/opt$dockerpullnginx:alpinealpine:Pullingfromlibrary/nginx46b060cc2620:Alreadyexists21af147d2ad5:......
  • Linux服务管理-Nginx进阶
    通常会通过rewrite将用户的80请求转化为443请求,也就意味着Nginx需要去做虚拟主机,一个80端口的虚拟主机和一个443端口的虚拟主机,当访问80端口的虚拟主机时返回一个信息让用户去访问443端口的虚拟主机。......
  • Golang语言之Prometheus的日志模块使用案例
    作者:尹正杰版权声明:原创作品,谢绝转载!否则将追究法律责任。目录一.源代码编写二.编译三.测试一.源代码编写packagemainimport( "fmt" "os" "path/filepath" "time" "g......
  • linux重新加载nginx配置的三种办法
    1.确保当前nginx进程运行中[root@master10~]#systemctlstatusnginx●nginx.service-ThenginxHTTPandreverseproxyserverLoaded:loaded(/usr/lib/systemd/system/nginx.service;disabled;vendorpreset:disabled)Active:active(running)sinceFri2......
  • nginx 之 proxy_pass详解 切割url
    原文链接: https://www.jianshu.com/p/b010c9302cd0在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径;如果没有/,表示相对路径,把匹配的路径部分也给代理走。假设下面四种情况分别用http://192.168.1.1/proxy/test.html进行访问。第一种:locatio......
  • 如何从一堆文件中找到指定的日志段?
    背景这个问题主要考察了Linux命令的使用,find命令和grep命令,在linux系统中,这两个命令用的比较广泛,工作中常常可以用来查找到指定的日志内容。今天我们就来学一下两个命令,然后回答下这个问题吧。命令介绍1、find命令find常用来在Linux系统中查找文件或者目录,查找到的文件名会......
  • 如何正确配置 Nginx 来防止任意文件读取攻击?
    限制alias指令的使用:使用alias指令时,确保路径不会导致路径遍历漏洞。避免使用用户输入作为alias的一部分。组合使用 root 和 aliasserver{     root/var/www;     location/static{     alias/var/www/public/static;   ......
  • SpringBoot日志的使用
    背景:在生产环境中,排程问题都是通过日志,所以日志很重要。日志有三个部分组成LoggerAppenderLayout一般日志都会有对应的配置文件,log4j2.xml或者是logback-spring.xml,日志的输出格式在Pattern标签中1、确认日志框架:确认日志框架是log4j2、logback还是其他的......
  • Jenkins 的 Shell 命令中执行一个 JAR 包时,日志没有显示,如何禁用输出缓冲
    在Jenkins的Shell命令中执行JAR包时,如果日志没有显示且你想禁用输出缓冲,可以尝试使用以下方法之一来禁用输出缓冲:1.使用 stdbuf 命令:stdbuf 是用于修改标准I/O缓冲机制的命令,可以用来调整输出的缓冲方式。你可以尝试使用 stdbuf 命令来禁用输出缓冲,例如:stdbuf-o......