nginx日志切割和日志定期清理

2023-05-16

nginx日志默认不做人为处理,日志文件会存放在access.log,error.log两个文件中,随着时间的推移,日志量会越来越大,不方便编辑查看,为了让日志按天存放,可以做一些配置,设置一个定时任务,每天凌晨00:00开始备份昨天的日志,然后重新开启一个新的日志文件。具体实现如下:

vi /root/nginx_logback.sh
#!/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

日志按天存放,这样还有一个问题,经过三个月,或者更久,日志文件越来越多,这又是一个问题,所以需要对日志做定期清理,只保留一段时间内的日志。这里介绍一个开源日志清理框架Log-Cutter。log-cutter是用java语言开发的一个日志清理框架,他的文件结构如下:

配置文件很容易理解

<?xml version="1.0" encoding="UTF-8"?>
<CONFIG	xmlns="http://www.jessma.org"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xsi:schemaLocation="http://www.jessma.org http://www.jessma.org/schema/log-cutter-cfg-2.0.xsd">
	<global>
		<!-- 开始日志检查延时 (小时), 默认: 0 (立刻开始)
		
			1) 当指定为一个整数值时,执行器首次启动延时时间为该值设定的小时数

				(例如:12 小时后首次启动执行器)
				<start-check-delay>12</start-check-delay>
				
			2) 当指定为一个 ‘hh:mm’ 格式的值时,执行器首次启动时间为该时分值

				(例如:12 点 34 分首次启动执行器,如果当前时间超过 12 点 34 分则在明天的 12 点 34 分首次启动执行器)
				<start-check-delay>12:34</start-check-delay>
		-->
		<start-check-delay>0</start-check-delay>
		<!-- 日志检查间隔 (小时), 默认: 72 -->
		<check-interval></check-interval>
		<!-- Log4J 配置文件, 默认: ${CLASS_ROOT}/../conf/log4j2.xml -->
		<log4j-config-file></log4j-config-file>
		<!-- 进程锁文件, 默认: ${CLASS_ROOT}/../${APP_NAME}.lock -->
		<lock-file></lock-file>
	</global>
	
	<!-- 要删除的日志文件列表(可配置多个,由 DelFileRunner 执行)
		1) DelFileRunner 会递归删除符合条件的文件夹及其中的所有文件
		2) 注意:在判断是否删除文件夹时,检测的是文件夹的最后修改时间,而不是其中文件的最后修改时间
		3) DelFileRunner 适用于清理 “定期产生新日志文件” 的应用程序日志
	-->
	<!-- delete-files.expire: 日志文件过期时间(天), 默认: 90 -->
	<delete-files expire="7">
		<!-- file.path: 文件所在目录, 必须填写, 不能包含通配符 -->
		<!-- file: 文件或文件夹名称, 必须填写, 可包含通配符 -->
		<file path="/usr/local/openresty/nginx/logs">*.log*</file>
	</delete-files>	
</CONFIG>

主要的配置就在<delete-files expire="7"></delete-files> 中,<global></global>中的配置可以忽略。这里只需要清理nginx日志,根据业务可以添加更多的清理日志。expire=7就是清理超过7天的日志,从当前日期往前推7天,7天之前的日志都会清理掉。

这里采用定时任务的方式执行,每天凌晨2:30执行一次。

执行的结果可以从Log-Cutter自己产生的日志中看。

结果可以看出就保留了7天的日志,可以从nginx日志目录中做确认。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nginx日志切割和日志定期清理 的相关文章

随机推荐

  • redhat7源码编译hadoop2.6.0

    以前在32位linux机器上编译过hadoop2 6 0 这次在redhat7 64bit上再次编译hadoop2 6 0 xff0c 除必须的jdk maven protobuf需要安装之外 xff0c 还需要安装系统依赖库gcc gcc
  • elasticsearch启动错误

    最近想尝试一下elk搭建实时日志分析系统 xff0c 结果运行elasticsearch时 xff0c 就遇到了一些问题 这些问题基本都是系统参数相关的 现在整理出来 xff0c 以免后面再次遇到 xff0c 也供大家参考 xff0c 少走
  • kafka+flume+hdfs实时日志流系统初探

    本次实验 xff0c 主要为了测试将kafka的消息通过flume接收并存入hdfs xff0c 如果之前搭建过hadoop flume kafka的 xff0c 这里会很快就会完成 xff0c 思路比较清晰 xff0c 主要配置在flum
  • 让Eclipse中spring的xml配置文件出现属性和类提示

    在spring配置文件中可以让配置bean的时候出现提示 xff0c 这里需要做一些设置 设置包括安装springide插件 spring beans version xsd文件引入 xff0c 增加xml编辑提示的字符 xff0c 默认只
  • win7查看端口占用的进程

    之前遇到一个问题 xff0c 系统上mysql启动了 xff0c 无法通过navicat客户端来连接 xff0c 这就很郁闷了 xff0c 最后定位到问题 xff0c 是我机器上还开启了一个开发php的应用程序phpwamp 它自带了一个m
  • cxf+spring实现webservice

    1 构建maven项目 xff0c 工程结构如下 xff1a 这里需要特别指出就是cxf core 3 1 12 jar类路径META INF cxf下有一个cxf xml的配置文件 xff0c 这个在applicationContext
  • Activemq+spring整合

    activemq与spring的整合需要用到线程池 考虑到连接 会话等资源的建立和释放 xff0c 无须人工操作 xff0c 全部交给容器来处理 这里通过一个实例讲解activemq与spring如何整合 项目大致是这样的设计 xff1a
  • springsecurity4.2入门完整实例

    1 构建maven项目 xff0c 引入springsecurity相关依赖 项目结构如下 xff1a pom xml配置文件主要部分 xff1a lt properties gt lt spring version gt 4 2 0 RE
  • Linux上tensorflow安装

    选择安装Anaconda xff0c 然后激活tensorflow 环境 最后使用pip install安装 第一步 xff1a 安装Anaconda xff0c Anaconda集成了很多python库 xff0c 不用手动额外安装 An
  • Window安装Anaconda后,conda不是内部或者外部命令

    今天在安装Theano的时候 xff0c 需要看一下 xff0c anaconda已经安装了哪些包 使用命令如下 在控制台 xff0c cmd回车输入即可 xff1a conda list 但是 xff0c 显示出错 xff0c conda
  • zookeeper集群环境搭建

    zookeeper是一个分布式框架 xff0c 它的用途在今天非常广泛 xff0c 通常与dubbo一起构成分布式系统 xff0c 另外kafka消息系统也自带了zookeeper hadoop集群也少不了zookeeper xff0c z
  • hadoop-2.8.0完全分布式环境搭建

    一 机器及环境准备 1 jdk安装不用多说 xff0c 安装完成配置环境变量即可 export JAVA HOME 61 usr java latest export JRE HOME 61 JAVA HOME jre export CLA
  • Your password does not satisfy the current policy requirements解决办法

    mysql5 7 x安装以后 xff0c 想修改随机生成的密码为简单容易记忆的密码 xff0c 如root 123456等 xff0c 这时候通过修改密码的几种方式都不行 xff0c 出现密码不符合当前安全策略要求 为了解决这种问题 xff
  • redhat7安装oracle11gR2之环境准备

    redhat7安装oracle11gR2环境准备 xff1a 内存 xff1a 2g 磁盘空间 xff1a 15g以上 交换分区 xff1a 3g 我们将oracle安装到 opt app oracle目录下 xff0c 后面的环境变量则以
  • redhat7安装oracle11gR2之动手安装

    oracle11gR2 64位数据库下载地址 xff1a http www oracle com technetwork database enterprise edition downloads 112010 linx8664soft 1
  • redhat7静默安装oracle11gR2

    所谓的静默安装是指不用安装redhat7桌面系统 xff0c 并进入桌面利用界面安装oracle xff0c 这里采用最小化安装redhat7 xff0c 直接在命令行下通过命令执行安装 环境配置和用户设置基本和界面安装一致 就是进入 op
  • docker+nextcloud搭建个人云存储系统

    一 docker安装和启动 yum install epel release yum install docker service docker start 二 docker compose安装 curl L http github com
  • kafka集群搭建以及运行kafka监控平台kmonitor

    kafka集群搭建 kafka依赖zookeeper运行 xff0c 在搭建kafka系统之前需要搭建zookeeper集群 xff0c 这里先略过zookeeper集群搭建的过程 另外 xff0c kafka需要运行在jdk环境中 xff
  • CDH5安装失败如何重新安装

    cdh安装失败的原因可能有以下原因 xff1a 1 机器内存不足 xff0c server节点我用了6G xff0c 两个agent节点均是4G才安装成功 2 需要的mysql驱动文件没有拷贝到指定位置 具体重新安装步骤如下 xff1a 一
  • nginx日志切割和日志定期清理

    nginx日志默认不做人为处理 xff0c 日志文件会存放在access log error log两个文件中 xff0c 随着时间的推移 xff0c 日志量会越来越大 xff0c 不方便编辑查看 xff0c 为了让日志按天存放 xff0c