当前位置: 首页 > news >正文

【Linux】logrotate实现“日志文件定时分割“

问题背景

项目部署的过程中,经常会需要查看程序的执行日志。我之前的做法都是用nohup ... > xxx.log 2>&1 &将日志保存到xxx.log文件中的。但是问题是,程序有时会运行很长时间,一直保存在一个文件里,文件会越来越大,下载、查看都不是很方便。所以就需要一种方法能够定时地将日志文件分割,比如按天分割,每天保存一个。正好Linux系统上的logrotate工具可以实现这个功能。

logrotate是什么?

github:https://github.com/logrotate/logrotate

官方介绍:

The logrotate utility is designed to simplify the administration of log files on a system which generates a lot of log files. Logrotate allows for the automatic rotation compression, removal and mailing of log files. Logrotate can be set to handle a log file hourly, daily, weekly, monthly or when the log file gets to a certain size.

简单来说,就是可以自动地、定时地对日志文件进行轮转、压缩、删除。对于轮转操作,我理解就是对日志文件定时地进行备份、重命名,并生成新的日志文件的过程。

logrotate配置文件

配置文件主要有两部分:

# 主配置
/etc/logrotate.conf# 子配置
/etc/logrotate.d/*

主配置里就是一些全局配置,我在此次实现里没用到,就先不管。

子配置里存放的是不同服务对应的日志文件。比如我有一个springboot服务一直在往nohup.out文件中写文件,现在想用logrotate工具实现日志分割功能,那就可以在/etc/logrotate.d目录下创建一个名字为springboot文件:

/etc/logrotate.d/springboot

文件里的具体内容如下:

/path/to/nohup.out {# 按每天轮转daily# 保存7个历史备份,即一周rotate 7# 日志非空时轮转notifempty# 自动创建新的日志文件,和源文件有相同权限create# 分割的日志文件的文件名以日期格式结尾dateext
}

当然也有其他的配置,具体可以自行百度。

验证配置文件是否编写正确

写好了之后,我不可能等到每天凌晨它启动轮转的时候再去看它是否能够正常工作,那太费时间了。所以就需要手动地先进行验证。

好在logrotate也提供了这样的功能:

  1. sudo logrotate -d /path/to/mylogrotate.conf,用于验证配置文件是否编写正确。如果没有error报错,说明编写正确
  2. sudo logrotate -f /path/to/mylogrotate.conf,用于强制执行轮转,执行后立刻执行轮转,这个时候就能查看是否能分割日志文件了

这里需要注意的是:

  1. 分割的日志文件默认是和轮转的日志文件同级目录的
  2. 由于轮转后会清空日志文件,所以保险起见,一定要先进行备份!!!(对于这种会删除数据、日志等的操作一定都要备份!!)

写配置文件遇到的问题

在写配置文件的时候,发现注释不能和单个配置写在同一行里,否则注释的#符号会被识别成配置,导致报错。正确的写法应该是注释单独写一行,比如:

/path/to/nohup.out {# 按每天轮转daily# 保存7个历史备份,即一周rotate 7# 日志非空时轮转notifempty# 自动创建新的日志文件,和源文件有相同权限create# 分割的日志文件的文件名以日期格式结尾dateext
}

错误的写法:

/path/to/nohup.out {daily  # 按每天轮转rotate 7  # 保存7个历史备份,即一周notifempty  # 日志非空时轮转create  # 自动创建新的日志文件,和源文件有相同权限dateext  # 分割的日志文件的文件名以日期格式结尾
}

相关文章:

【Linux】logrotate实现“日志文件定时分割“

问题背景 项目部署的过程中,经常会需要查看程序的执行日志。我之前的做法都是用nohup ... > xxx.log 2>&1 &将日志保存到xxx.log文件中的。但是问题是,程序有时会运行很长时间,一直保存在一个文件里,文件会越来越大…...

Android可绘制资源概览(背景、图形等)

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 目录 一、导读二、概览三、drawable 分类3.1 Bitmap fileXML …...

力扣2095.删除链表的中间节点(java快慢指针)

Problem: 2095. 删除链表的中间节点 文章目录 思路解题方法复杂度Code 思路 利用快慢指针,快指针每次走两步,慢指针每次走一步(循环退出条件是fast指针不为空同时fast.next不为空),但是我们容易发现这样到最后slow指针…...

【Vue-Element-Admin】table添加自定义索引

通过给 typeindex 的列传入 index 属性&#xff0c;可以自定义索引。该属性传入数字时&#xff0c;将作为索引的起始值。也可以传入一个方法&#xff0c;它提供当前行的行号&#xff08;从 0 开始&#xff09;作为参数&#xff0c;返回值将作为索引展示。 <el-table:data&q…...

0008Java安卓程序设计-ssm基于Android平台的健康管理系统

文章目录 **摘要**目录系统实现开发环境 编程技术交流、源码分享、模板分享、网课教程 &#x1f427;裙&#xff1a;776871563 摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,…...

Mac 禁用一些高占用cup的进程

什么是CrashReporter&#xff1f; CrashReporter在应用程序崩溃的任何时候都会运行&#xff0c;它旨在保存应用程序状态&#xff0c;以帮助开发人员找出应用程序崩溃原因。基本上&#xff0c;一个进程是启动、崩溃&#xff08;并调用CrashReporter&#xff09;&#xff0c;然后…...

layui form表单 调整 label 宽度

这个可以调整所有label .layui-form-label {width: 120px !important; } .layui-input-block {margin-left: 150px !important; }情况是这样的&#xff0c;表单里有多个输入框&#xff0c;只有个别label 是长的&#xff0c;我就想调整一下个别长的&#xff0c;其它不变 <di…...

轻量封装WebGPU渲染系统示例<12>- 基础3D对象实体(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/main/src/voxgpu/sample/PrimitiveEntityTest.ts 此示例渲染系统实现的特性: 1. 用户态与系统态隔离。 细节请见&#xff1a;引擎系统设计思路 - 用户态与系统态隔离-CSDN博客 2. 高频调用与低频调用隔…...

[ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决

业务需求&#xff1a;需要做到table表格中某些行数据不能被选中&#xff0c;比如在审核一些记录数据时&#xff0c;已经被审核的数据就不能再次提交审核&#xff0c;特别是批量多选的情况&#xff0c;列表中既有已经审核的&#xff0c;也有未审核的&#xff0c;只要求选中未审核…...

【PY】倒计时日历

大家有时候会不会觉得时间记不住呢&#xff1f;PY倒计时日历可以满足你。 main.py&#xff1a; from tkinter import Tk,Canvas from datetime import date,datetime def get_events():list_events[]with open(events.txt)as file:for line in file:lineline.rstrip(\n)curre…...

windows mysql安装

1、首先去官网下载mysql安装包&#xff0c;官网地址&#xff1a;MySQL :: Download MySQL Community Server 2&#xff1a;把安装包放到你安装mysql的地方&#xff0c;然后进行解压缩&#xff0c;注意&#xff0c;解压后的mysql没有配置文件&#xff0c;我们需要创建配置文件 配…...

【蓝桥杯省赛真题42】Scratch舞台特效 蓝桥杯少儿编程scratch图形化编程 蓝桥杯省赛真题讲解

目录 scratch舞台特效 一、题目要求 编程实现 二、案例分析 1、角色分析...

Kafka(二)消息系统设计

文章目录 前言整体设计时序图时序图解释 最后 前言 当多个系统之间通过Kafka来解耦时&#xff0c;在系统设计初期&#xff0c;基本的要求都是相似的&#xff0c;只不过是消费消息时的业务逻辑可能不同。 本文以业务系统和邮件系统解耦作为示例。业务系统需要发送邮件时&#…...

【移远QuecPython】EC800M物联网开发板的内置GNSS定位的恶性BUG(目前没有完全的解决方案)

【移远QuecPython】EC800M物联网开发板的内置GNSS定位的恶性BUG&#xff08;目前没有完全的解决方案&#xff09; GNSS配置如下&#xff1a; 【移远QuecPython】EC800M物联网开发板的内置GNSS定位获取&#xff08;北斗、GPS和GNSS&#xff09; 测试视频&#xff08;包括BUG复…...

R语言_RColorBrewer包--全平台可用

R语言_RColorBrewer包–全平台可用...

VulnHub DC-4

一、信息收集 1.nmap扫描 ┌──(root&#x1f480;kali)-[~/routing] └─# nmap -sS -A 192.168.103.194/24发现开放了22、80端口 ┌──(root&#x1f480;kali)-[~/routing] └─# nmap --scriptvuln -p22,80 192.168.103.194--scriptvuln 是nmap中script模块&#xff0…...

Python 查询 IP 地址段,并获取 Hostname

最近 LinkedIn 爬虫大量抓取网站&#xff0c;需要确定那些是 LinkedIn 的爬虫&#xff0c;经过对 IP 地址反向查询&#xff0c;确定了 hostname。 确定了 IP 地址段之后&#xff0c;我们需要确定每个 IP 的 hostname 是不是&#xff1a;x.fwd.linkedin.com 下面是使用 Python…...

[架构之路-251/创业之路-82]:目标系统 - 纵向分层 - 企业信息化的呈现形态:常见企业信息化软件系统 - 商业智能、决策支持系统、知识管理

目录 前言&#xff1a; 一、企业信息化的结果&#xff1a;常见企业信息化软件 1.1 商业智能 - 管理层 1.1.1 什么是商业智能What 1.1.1.1 商业智能常见工具 1.1.2 为什么需要商业智能Why&#xff1f; 1.1.3 谁需要商业智能who&#xff1f; 1.1.4 商业智能在企业管理中的…...

linux shell sh 脚本开机自启动

文章目录 1. 写脚本2. 给权限3. 设自启 1. 写脚本 写一个shell脚本 随便举个例子&#xff0c;每次开机在/home下touch个aa.txt # 创建脚本 touch my_shell.sh# 编写内容&#xff1a; #!/bin/bash touch /home/aa.txt2. 给权限 给编写的脚本执行权限 sudo chmod x my_shell…...

欧科云链研究院:如何降低Web3风险,提升虚拟资产创新的安全合规

在香港Web3.0行业&#xff0c;技术推动了虚拟资产投资市场的快速增长&#xff0c;但另一方面&#xff0c;JPEX诈骗案等行业风险事件也接连发生&#xff0c;为Web3行业发展提供了重要警示。在近期的香港立法会施政报告答问会上&#xff0c;行政长官李家超表示&#xff0c;与诈骗…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...