IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux Logrotate日志切割管理 -> 正文阅读

[系统运维]Linux Logrotate日志切割管理

Logrotate是 linux 系统用来分割日志的系统工具。Logrotate可以设置为每天、每周、每月或当日志文件达到一定的大小时处理日志文件,提供自动压缩、删除、分割日志文件的功能。一般Centos系统已经自带安装好了,并且默认Logrotate 加到cron(/etc/cron.daily/logrotate),/etc/cron.daily/logrotate 默认让Cron每天执行logrotate一次。

为什么用Logrotate,为什么不自己写个脚本分割?用脚本难免会丢失一部分日志。源码分析logrotate切割日志的实现原理 – 峰云就她了

若未安装使用如下命令安装logrotate

sudo yum install -y logrotate

配置文件介绍

/etc/logrotate.conf
/etc/logrotate.d/

logrotate.conf 全局配置文件,logrotate.d 是一个目录,该目录里的所有文件都会被主动的读入/etc/logrotate.conf中执行。

另外,如果 /etc/logrotate.d/ 里面的文件中若没有设定一些细节,则会以/etc/logrotate.conf这个文件的设定来作为默认值。

在/etc/logrotate.d目录里的个性化配置文件的参数与全局配置文件的参数重复,会覆盖Logrotate的缺省值。

查看logrotate主文件默认配置情况

cat /etc/logrotate.conf
weekly		            	# 每周转存一次
rotate 4                    # 指定日志文件删除之前轮转的次数,即每次转存的时候会保留前4次的转存文件。
create	                    # rotate后,创建一个新的空文件,指定logrotate自动建立新的日志文件,新的日志文件具有和原来的文件一样的权限。
dateext                     # 使用当期日期作为轮转日志的后缀名
include /etc/logrotate.d    # 将 /etc/logrotate.d/ 目录中的所有文件都加载进来

#以下每个配置相当于/etc/logrotate.d/下的个性化配置
/var/log/wtmp {             # 指定/var/log/wtmp日志文件;
    monthly                 # 每月轮转一次,优先于全局设定的每周轮转一次;
    minsize 1M              # 日志文件大于1M才会去轮转;
    create 0664 root utmp   # 转储后文件不存在时创建它,文件所有者为root,所属组为utmp,对应的权限为0664
    rotate 1                # 保留一个日志备份,优先于全局设置的四个;
}
/var/log/btmp {             # 指定/var/log/btmp日志文件;
    missingok               # 如果日志丢失,不报错;
    monthly
    create 0600 root utmp
    rotate 1
}

切割介绍

比如以系统日志/var/log/message做切割来简单说明下(rotate = 4 ?):

第一次执行完rotate(转存)之后,原本的messages会变成messages.1,而且会制造一个空的messages给系统来储存日志;
第二次执行之后,messages.1会变成messages.2,messages会变成messages.1,又造成一个空的messages来储存日志!
第三次执行之后,messages.2会变成messages.3,messages.1会变成messages.2,messages会变成messages.1,又造成一个空的messages来储存日志!
第四次执行之后,messages.3会变成messages.4,messages.2会变成messages.3,messages.1会变成messages.2,messages会变成messages.1,又造成一个空的messages来储存日志!
如果仅设定保留4个日志(即轮转4次)的话,那么执行第四次时,则 messages.4这个档案就会被删除,也就是会保存最新的几个日志。

由 include /etc/logrotate.d?这个文件的设定可以知道/etc/logrotate.d其实就是由/etc/logrotate.conf 所规划出来的目录,虽然可以将所有的配置都写入 /etc/logrotate.conf ,但是这样一来这个文件就实在是太复杂了,尤其是当使用很多的服务在系统上面时, 每个服务都要去修改 /etc/logrotate.conf 的设定也似乎不太合理了。

所以,如果独立出来一个目录,那么每个要切割日志的服务, 就可以独自成为一个文件,并且放置到 /etc/logrotate.d/ 当中。

如下:我们的tomcat日志切割的配置文件会放在/etc/logrotate.d下面。

切割Tomcat日志

在/etc/logrotate.d/目录下创建Tomcat服务日志配置文件,假如我的Tomcat日志文件路径为:/home/test/tomcat/logs/catalina.out

vi /etc/logrotate.d/tomcat


/home/mytest/tomcat/logs/catalina.out     # 指定要切割的日志文件路径;多个文件路径之间换行即可,参考cat /etc/logrotate.d/syslog
{
        # 加执行权限,下面这种参数有值时不要把注释加在后面,否则会报错
        su root root
        daily                                   # 每日轮转一次,优先于全局设定的每周轮转一次;
        # rotate 60 保留60个日志备份,优先于全局设置的四个;下面这种参数有值时不要把注释加在后面,否则会报错
        rotate 60
        missingok                               # 如果日志丢失,不报错继续滚动下一个日志
        dateext                                 # 使用当期日期作为轮转日志的后缀名
        compress                                # 通过gzip对转储以后的日志进行压缩
        notifempty                              # 空日志不进行轮转
        copytruncate                            # 以先拷贝再清空的方式对当前日志进行备份并截断操作;由于拷贝和清空之间有一个时间差,可能会丢失部分日志数据
}

保存好配置文件后,可以执行以下命令测试(立即截断日志):

logrotate -vf /etc/logrotate.d/tomcat

在/home/mytest/tomcat/logs/目录下看到切割后的文件即表示配置成功。

在某些情况下一天一次满足不了我们情况,就可以使用创建crontab定时任务手动调用这个命令,让他按照我们想要的时间点去切割。

crontab?-e

#每隔1小时执行一次
0 */1 * * * /home/mytest/logrotate-tomcat.sh

vi?/home/mytest/logrotate-tomcat.sh

logrotate -vf /etc/logrotate.d/tomcat

常用参数

compress:通过gzip对转储以后的日志进行压缩
nocompress:不对日志进行gzip压缩处理
copytruncate:用于处理还在打开中的日志文件,以先拷贝再清空的方式对当前日志进行备份并截断操作;由于拷贝和清空之间有一个时间差,可能会丢失部分日志数据
nocopytruncate:备份日志文件但不进行截断操作
create mode owner group:轮转时指定创建新文件,可指定权限、属主和属组
nocreate:日志轮转后不创建新的日志文件
delaycompress:发生轮转的日志文件到下一次转储时才压缩
nodelaycompress:日志轮转同时进行压缩
missingok:如果日志丢失,忽略此日志不产生报错
errors address:轮转时产生的错误信息发送到指定的Email地址
ifempty:空日志也进行日志轮转
notifempty:空日志不进行轮转
olddir directory:轮转后的日志文件放入指定的目录,指定目录和当前日志文件需要在同一个文件系统
noolddir:轮转后的日志文件和当前日志文件放在同一个目录下
sharedscripts:所有日志都轮转后统一执行postrotate脚本
prerotate:在logrotate轮转之前需要执行的指令,如修改文件的属性
postrotate:在logrotate转储之后需要执行的指令,如重启(kill -HUP)服务
daily:指定轮转周期为每天
weekly:指定轮转周期为每周
monthly:指定轮转周期为每月
rotate count:指定日志文件删除之前轮转的次数,0:没有备份,5:保留5个备份
dateext:使用当期日期作为轮转日志的后缀名
dateformat .%s:配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,只支持 %Y %m %d %s 这四个参数
size(或minsize) log-size:当日志文件到达指定的大小时才轮转,log-size能指定bytes(缺省)及KB (sizek)或MB(sizem).
当日志文件 >= log-size 的时候就轮转
size = 5 或 size 5 (>= 5 个字节就轮转)
size = 100k 或 size 100k
size = 100M 或 size 100M

Centos7配置logrotate日志轮转_xixixilalalahaha的博客-CSDN博客_centos7 logrotate

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 18:00:11  更:2022-03-12 18:01:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:43:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码