日志大了,怎么办?用我的日志切割脚本吧!

本文转载自https://www.imooc.com/article/13260

分享一个脚本,它配合linux系统的crontab任务,对nginx自动日志切割和清理,分别作用于ACCESS和ERROR的日志。

特点:

1、功能丰富

应有的功能中,不仅支持按天切割,而且支持通过通过设置文件大小作切割。

2、通用

通用于nginx、tengine,通过简单改进也能有好的支持切割清理httpd、lightd等其他Web server 日志。

3、更加易于理解

用shell方式相对更加好理解,并且易于后续的维护和功能的添加。

好了,话不多说直接上脚本:

#!/bin/bash

#Jeson

#Email:[email protected]

#变量定义:access、error日志文件列表

NGINX_LOG=(imoocc_com_access iaskjob_com error)

NGINX_ACCESS_PATH=/opt/logs/nginx/access

NGINX_ERROR_PATH=/opt/logs/nginx/error

#日期变量

Ydate=`date -d yesterday +%Y%m%d`

Adate=`date -d "20 days ago" +%Y%m%d`

#PID文件和nginx.conf中定义一致

Nginxpid=/opt/app/nginx/nginx.pid

#日志的量,超过此值,触发切割

Max_size=1000000

file_size="NULL"

#函数Get_Size,获取日志文件的大小。

#rotate funcation

function Get_Size(){

   logfile=$1

   file_size=`ls -l ${logfile}awk ‘{print $5}‘`

   if [[ $file_size =~ [1-9]* ]];then

       echo $file_size

   else

       echo "error:cant get file ${logfile} size!"

       exit

   fi

}

#函数Log_Rotate,完成日志轮转切割。

# rename log

function Log_Rotate(){

    SIZE=$1

    ACCESS_FILE=$2

    BACK_DIR=$3

    echo "==============$SIZE $ACCESS_FILE"

    if [ $SIZE == "NULL"  ];then

        echo "######00000000"

        if [ ! -d ${BACK_DIR} ];then

            mkdir ${BACK_DIR}

        fi

        mv -f  ${ACCESS_FILE} ${BACK_DIR}/${Ydate}.log

        touch ${ACCESS_FILE}

        rm ${BACK_DIR}/${Adate}.log

    elif [ $SIZE -gt $Max_size ];then

        echo "#######11111111"

        if [ ! -d ${BACK_DIR} ];then

            mkdir ${BACK_DIR}

        fi

        mv -f  ${ACCESS_FILE} ${BACK_DIR}/${Ydate}.log

        touch ${ACCESS_FILE}

        rm ${BACK_DIR}/${Adate}.log

    fi

}

#主功能段,作用遍历日志,输入参数为size,则按照size进行切割,如果为day,则按照日常轮转进行。

for logname in ${NGINX_LOG[@]}

do

    if [ ${logname} == ‘error‘ ];then

        LOG_FILE=${NGINX_ERROR_PATH}/${logname}.log

        BACK_DIR=${NGINX_ERROR_PATH}/${logname}

    else

        LOG_FILE=${NGINX_ACCESS_PATH}/${logname}.log

        BACK_DIR=${NGINX_ACCESS_PATH}/${logname}

    fi

    if [ $1 == "size" ];then

         file_size=`Get_Size ${LOG_FILE}`

         Log_Rotate ${file_size} ${LOG_FILE} ${BACK_DIR}

         echo $file_size

    elif [ $1 == "day" ];then

         Log_Rotate ${file_size} ${LOG_FILE} ${BACK_DIR}

    else

       echo "Param : $logname error!"

    fi

done

#給nginx发送一个信号量,让nginx重载,重新重新生成日志

## restart nginx

[ ! -f $Nginxpid ]  kill -USR1 $(cat $Nginxpid)

分享一个脚本,它配合linux系统的crontab任务,对nginx自动日志切割和清理,分别作用于ACCESS和ERROR的日志。

特点:

1、功能丰富

应有的功能中,不仅支持按天切割,而且支持通过通过设置文件大小作切割。

2、通用

通用于nginx、tengine,通过简单改进也能有好的支持切割清理httpd、lightd等其他Web server 日志。

3、更加易于理解

用shell方式相对更加好理解,并且易于后续的维护和功能的添加。

好了,话不多说直接上脚本:

作者:
幕客技术

链接:https://www.imooc.com/article/13260
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!

分享一个脚本,它配合linux系统的crontab任务,对nginx自动日志切割和清理,分别作用于ACCESS和ERROR的日志。

特点:

1、功能丰富

应有的功能中,不仅支持按天切割,而且支持通过通过设置文件大小作切割。

2、通用

通用于nginx、tengine,通过简单改进也能有好的支持切割清理httpd、lightd等其他Web server 日志。

3、更加易于理解

用shell方式相对更加好理解,并且易于后续的维护和功能的添加。

好了,话不多说直接上脚本:

作者:
幕客技术

链接:https://www.imooc.com/article/13260
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!

分享一个脚本,它配合linux系统的crontab任务,对nginx自动日志切割和清理,分别作用于ACCESS和ERROR的日志。

特点:

1、功能丰富

应有的功能中,不仅支持按天切割,而且支持通过通过设置文件大小作切割。

2、通用

通用于nginx、tengine,通过简单改进也能有好的支持切割清理httpd、lightd等其他Web server 日志。

3、更加易于理解

用shell方式相对更加好理解,并且易于后续的维护和功能的添加。

好了,话不多说直接上脚本:

作者:
幕客技术

链接:https://www.imooc.com/article/13260
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!

分享一个脚本,它配合linux系统的crontab任务,对nginx自动日志切割和清理,分别作用于ACCESS和ERROR的日志。

特点:

1、功能丰富

应有的功能中,不仅支持按天切割,而且支持通过通过设置文件大小作切割。

2、通用

通用于nginx、tengine,通过简单改进也能有好的支持切割清理httpd、lightd等其他Web server 日志。

3、更加易于理解

用shell方式相对更加好理解,并且易于后续的维护和功能的添加。

好了,话不多说直接上脚本:

作者:
幕客技术

链接:https://www.imooc.com/article/13260
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!

分享一个脚本,它配合linux系统的crontab任务,对nginx自动日志切割和清理,分别作用于ACCESS和ERROR的日志。

特点:

1、功能丰富

应有的功能中,不仅支持按天切割,而且支持通过通过设置文件大小作切割。

2、通用

通用于nginx、tengine,通过简单改进也能有好的支持切割清理httpd、lightd等其他Web server 日志。

3、更加易于理解

用shell方式相对更加好理解,并且易于后续的维护和功能的添加。

好了,话不多说直接上脚本:

作者:
幕客技术

链接:https://www.imooc.com/article/13260
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作!

时间: 2024-10-16 03:53:09

日志大了,怎么办?用我的日志切割脚本吧!的相关文章

nginx日志切割脚本,自动上传到日志服务器

nginx日志切割脚本,自动上传到日志服务器 1 nginx是yum方式安装,系统会自动生成nginx日志切割计划任务在/etc/logrotate.d/nginx下,把自动生成的计划任务删除,自己编写切割脚本,并传到统一存放日志的服务器上.  www.ahlinux.com 2 安装ncftp包,用于日志传输时使用. 3 简单切割脚本如下: #!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin export PATH yesterday=`date +%

Nginx日志切割脚本实践

因为nginx存放的日志文件逐渐增大,导致日后想察看某个时间的日志的时候,打开巨大文件所带来的性能代价和时间定位查找麻烦,因此需要对日志文件按照时间和频率进行切割.切割过程如下: 创建当前时间目录,比如年/月目录 然后将当前指定的日志,剪切到该创建好的目录下 重启nginx服务,重新生成0kb大小的新日志文件 通过计划任务,周期性执行以上切割日志,重新生成日志的操作就能达到既让日志文件保持一定大小而且又能按照指定的时间格式和目录进行存放.方面查询的便利和文件打开的快速. 切割脚本代码如下: 1

Linux的日志文件管理工具——logrotate(linux日志切割与轮循)

日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到.对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题.除此之外,处理一个单个的庞大日志文件也常常是件十分棘手的事. Linux日志切割 现代的Linux版本都有一个小程序,名为logrotate,用来帮助用户管理日志文件,它以自己的守护进程工作.logrotate周期性地旋转日志文件,可以周期性地把每个日志文件重命名成一个备份名字,然后让它的守护进程开始使用一个日志文件的新的拷贝.

nginx日志切割脚本,python实现

# 自搭建了个人博客 有需要交流学习的可以访问 www.wpython.com #!/usr/bin/env python   import datetime,os,sys,shutil   log_path = '/alidata/log/nginx/access/' log_file = 'www.wpython.com.log'   yesterday = (datetime.datetime.now() - datetime.timedelta(days = 1))   try:    

nginx日志切割脚本

# 编写切割脚本 # vim /data0/scripts/cut_nginx_log.sh #!/bin/bash logs_path="/data0/log/nginx" YDATE=`date  +"%Y"` MDATE=`date  +"%m"` DDATE=`date -d"1 day ago" +"%d"` HDATE=`date  +"%H"` mkdir -p ${log

SQL Server 2014 日志传送部署(7):日志传送故障转移和删除日志传送

13.4 故障转移 13.4.1 故障定位 在前几节明确的提及到,日志传送由三个基本的作业组成:备份作业.复制作业和还原作业.通过上一节日志传送监控功能来定位哪一个作业出了问题: 如果备份作业出了问题,检查主服务器状态. 如果还原作业出了问题,检查辅助服务器状态:或者辅助数据库处于STANDBY模式时用户正在使用辅助数据库. 如果复制作业出了问题,检查除了辅助服务器状态外,还需要检查网络状态. 13.4.2 故障转移 日志传送的故障转移除了考虑切换技术操作以外,更需要考虑主服务器和辅助服务器之间

使用log4j2打印Log,log4j不能打印日志信息,log4j2不能打印日志信息,log4j和logj2,idea控制台信息乱码(文末)

说来惭愧,今天就写了个"hello world",了解了一下log4j的日志. 本来是想在控制台打印个log信息,也是遇到坎坷重重,开始也没去了解log4j就来使用,log4j配置文件开始用的log4j.properties,结果控制台一直打印ERROR StatusLogger No log4j2 configuration file found.也就是Log4j2配置文件没找到的意思. 我就把log4j.properties文件名改成log4j2.properties,结果不报错了

日志和告警数据挖掘经验谈——利用日志相似度进行聚类,利用时间进行关联分析

摘自:http://www.36dsj.com/archives/75208 最近参与了了一个日志和告警的数据挖掘项目,里面用到的一些思路在这里和大家做一个分享. 项目的需求是收集的客户系统一个月300G左右的的日志和告警数据做一个整理,主要是归类(Grouping)和关联(Correlation),从而得到告警和日志的一些统计关系,这些统计结果可以给一线支持人员参考. 得到的数据主要分为两部分,一部分是告警的历史数据,这部分数据很少,只有50M左右,剩下的全部都是日志数据.日志数据大概有50多

解决Linux下Tomcat日志目录下的catalina.log日志文件过大的问题

本文摘自:(http://blog.csdn.net/stevencn76/article/details/6246162) 分类: Java技术专区2011-03-13 12:25 5017人阅读 评论(1) 收藏 举报 tomcatlinux工具任务web 由于Tomcat在默认情况下会将没有经过配置的web应用所产生的日志输出已经其本身的日志内容都输出到这个文件中,那么随着时间的推移,这个文件的尺寸将会越来越大,当需要检查日志内容时间会导致文件难以打开,而且同时tomcat依旧在不断的向文

基于mariadb的日志服务器及用loganalyzer实现日志的管理分析

日志文件和相关服务进程 日志文件用来记录系统,服务等在运行过程中发生的事件,事件发生的时间及事件的关键性程序.这些记录的信息在服务器运行出现问题时用来查看分析,以便解决问题.在Linux上,日志的记录一般有两种方式,一种是由软件自身完成自身运行状态的记录,例如httpd:另一种是由Linux上提供的日志文件管理系统来统一管理.运行的软件只需要调用这个管理系统中的相关服务,即可完成日志的记录.rsyslog就是这样的一个日志文件管理系统. rsyslog内置了很多facility,这个可以理解为服