Linux中的日志管理

news2024/11/27 6:17:25

本章主要介绍Linux中的日志管理

  • 了解rsyslog是如何管理日志的
  • 查看日志的方法

日志中记录了各种各样的问题,所以读取日志是检测并排除故障的一个重要方式,日志文件默认放在/var/log目录下。不同的问题要读取不同的日志,例如,邮件发不出去,可以读取/var/log/maillog日志文件;要查看哪些用户试图用ssh登录到本机,可以读 取/var/log/secure日志文件

在RHEL8/CentOS8中,日志是由rsyslogd服务管理的,不同类别的日志放在哪个文件 中,由/etc/rsyslog.conf决定

在/etc/rsyslog.conf中可以定义一系列的规则,决定不同类别的日志保存在哪个文件中。 定义规则的格式如下

 日志类别.日志级别标准线 文件

如果某个应用程序的日志级别大于等于日志类别后面的级别标准线,则日志会被记录到指 定的文件中,不妨先仔细看完下面的内容

日志类别包括以下几种

(1)auth:用户认证时产生的日志

(2)authpriv:ssh、ftp等登录信息的验证信息

(3)daemon:一些守护进程产生的日志

(4)ftp:ftp产生的日志

(5)lp:打印相关活动

(6)mark:服务内部的信息,是时间标识

(7)news:网络新闻传输协议(NNTP)产生的消息

(8)syslog:系统日志

(9)security:安全相关的日志

(10)uucp:Unix-to-Unix Copy,两个 UNIX之间的相关通信

(11)console:针对系统控制台的消息

(12)cron:系统执行定时任务产生的日志

(13)kern:系统内核日志

(14)local0~local7:由自定义程序使用

(15)mail:邮件日志

(16)user:用户进程

日志级别包括以下几种

(1)emerg:恐慌状态,如关机、重启系统等

(2)alert:紧急状态

(3)crit:临界状态

(4)err:其他错误

(5)warning:警告

(6)notice:需要调查的事项

(7)info:一般的事件信息

(8)debug:仅供调试

不需要详细了解具体每个级别的意义,只需知道这些级别从上往下是越来越低的。emerg 级别最高,debug级别最低

在写程序时,可以在程序的代码中定义一个日志信息,这个日志应该属于哪个类别,以及 级别是什么。当程序中的这个代码块被执行时,/etc/rsyslog.conf决定这个日志会写入哪个 文件中

为了更好地理解,先看一个例子。假设rsyslog.conf中已经定义了4条日志规则,如图

这里定义了不同类别的日志记录的最低标准,以及记录到哪个文件中。例如,第4条规则local5类别的日志,如果级别大于等于info,会记录到 file4.log中,如图

现在有一个A应用,在其代码中指定它所使用的日志类别是local5,所以在A应用的日志生成时,会使用第4条规则。因为第4条规则指定的是如何记录 local5级别的日志

那么,A应用所产生的日志到底会不会被第4条规则记录呢?主要取决于A应用的日志级别是否达到规则要求的最低标准。A应用产生的日志级别为debug,而规则4要记录的最低级别 为info, debug的级别低于info。所以,A应用产生的日志没有达到规则4的最低“分数线”,是不会被记录到file4.log 中的

1.1 rsyslog的配置

用vim编辑器打开/etc/rsyslog.conf,往下找到RULES关键字#### RULES ####,下面定义的都是记录日志的规则,去掉对应的注释行之后内容如下

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

上面这行*.info中的*表示所有类别的日志,都可以匹配到这条规则,但是要求应用程序的日志级别要达到info以上才会记录到/var/log/messages中

但是这里的*要排除mail、authpriv和 cron这三个类别,即这三个类别的日志不匹配这条规则,因为这三个类别后面写的级别是non

authpriv.*                                              /var/log/secure

这条规则的意思是,只要应用程序产生的日志是authpriv类别的就匹配这条规则,不管日志是哪个级别的,日志都记录到/var/log/secure中

mail.*                                                  -/var/log/maillog

这条规则的意思是,只要应用程序产生的日志是mail类别的就匹配这条规则,不管日志是哪个级别的,日志都记录到/var/log/maillog中

cron.*                                                  /var/log/cron

这条规则的意思是,只要应用程序产生的日志是cron类别的就匹配这条规则,不管日志是哪个级别的,日志都记录到/var/log/cron 中

*.emerg                                                 :omusrmsg:*

这条规则的意思是,不管应用程序产生的日志是哪个类别的,只要日志级别是emerg,就会通知所有人(所有终端都会有消息提醒)

uucp,news.crit                                          /var/log/spooler

这条规则的意思是,只要应用程序产生的日志是uucp或news类别的就匹配这条规则,不管日志是哪个级别的,日志都记录到/var/log/spooler 中

local7.*                                                /var/log/boot.log

这条规则的意思是,只要应用程序产生的日志是local7类别的就匹配这条规则,不管日志是哪个级别的,日志都记录到/var/log/boot.log 中

下面开始自己写一条规则,在vim 编辑模式下,在上面规则的后面添加一条内容

local6.info                                             /var/log/xx.log

这条规则的意思是,只要应用程序产生的日志是 local6类别的就匹配这条规则,但是要求日志的级别要大于等于info才能记录到/var/log/boot.log中

保存退出并重启rsyslog

[root@redhat8 ~]# systemctl restart rsyslog.service 
[root@redhat8 ~]#

下面模拟一个应用程序产生一个类别为local6、级别为debug的日志

[root@redhat8 ~]# logger -p local6.debug "1111"
[root@redhat8 ~]#

这个命令的意思是,模拟产生一个类别为local6、级别为debug的日志,日志内容为1111.

这个日志应该会使用配置文件/etc/rsyslog.conf中所定义的如下两条规则

1. *.info;mail.none;authpriv.none;cron.none /var/log/messages
2. local6.info /var/log/xx.log

第一条规则能匹配到任何类别,但是要求info级别以上的日志;第二条能匹配local6类别、info级别以上的日志。但模拟日志仅仅是debug级别的,不达标,所以模拟日志是不会被记录的

[root@redhat8 ~]# ls /var/log/xx.log
ls: 无法访问'/var/log/xx.log': 没有那个文件或目录
[root@redhat8 ~]#

现在重新模拟一个 local6级别为info的日志,日志内容为2222

[root@redhat8 ~]# logger -p local6.info "2222"
[root@redhat8 ~]#

按照上面的分析,这个日志会被记录,且会记录到/var/log/messages和/var/log/xx.log两个日志文件中,下面来验证一下

[root@redhat8 ~]# grep 2222 /var/log/messages
Dec  7 10:55:53 redhat8 root[2011]: 2222
[root@redhat8 ~]# cat /var/log/xx.log 
Dec  7 10:55:53 redhat8 root[2011]: 2222
[root@redhat8 ~]#

可以看到,这个日志被记录到两个文件中了

现在重新模拟—个local6级别为err 的日志,日志内容为3333

[root@redhat8 ~]# logger -p local6.err "3333"
[root@redhat8 ~]#

然后确认这个日志是否被记录

[root@redhat8 ~]# grep 3333 /var/log/messages
Dec  7 10:58:16 redhat8 root[2052]: 3333
[root@redhat8 ~]# cat /var/log/xx.log 
Dec  7 10:55:53 redhat8 root[2011]: 2222
Dec  7 10:58:16 redhat8 root[2052]: 3333
[root@redhat8 ~]#

1.2 查看日志

前面分析了rsyslog是如何归纳日志信息的,下面来看如何查看日志

第一种方式就是查看日志文件,因为不同类别的日志被记录到不同的日志文件了,所以我们查看对应的日志文件即可

(1)查看系统的启动过程,可以通过/var/log/boot.log来查看

(2)查看谁通过ssh、ftp等登录系统或尝试登录系统,可以通过/var/log/secure 来查看

(3)查看邮件服务器收发邮件的情况,可以通过/var/log/maillog来查看

(4)查看安装或卸载了哪些包,可以通过/var/log/dnf.log来查看

大部分的日志信息都是记录在/var/log/messages中的,可以在此日志文件中查找相关信息。除以上查看日志文件的方式外,还可以通过 journalctl 命令来查看

直接输人“journalctl”,会显示系统所有的日志。此时显示了一页的日志,按【Esc】键可以退出来,按【Enter】键可以一行一行地往下显示,按空格键可以一页一页地往下显示

查看最新的日志

[root@redhat8 ~]# journalctl -f

此处日志仍然处于打开状态,不会看到终端提示符,如果此时日志有变化,这里会继续输出。按【Ctrl+C】组合键退出

如果想查看日志中某级别以上的日志,可以加上“-p级别”选项来查看。例如查看 emerg级别的日志,命令如下

[root@redhat8 ~]# journalctl -p emerg
-- Logs begin at Thu 2023-12-07 10:47:00 CST, end at Thu 2023-12-07 11:02:03>
-- No entries --

没有任何输出,说明系统中暂时没有emerg级别的日志。我们先模拟一个类别为local6、级别为emerg的日志

[root@redhat8 ~]# logger -p local6.emerg "aaaa"

Broadcast message from systemd-journald@redhat8 (Thu 2023-12-07 11:03:55 CST):

root[2116]: aaaa

[root@redhat8 ~]# 
Message from syslogd@redhat8 at Dec  7 11:03:55 ...
 root[2116]:aaaa

然后再次查看所有emerg级别以上的日志

[root@redhat8 ~]# journalctl -p emerg
-- Logs begin at Thu 2023-12-07 10:47:00 CST, end at Thu 2023-12-07 11:03:55>
12月 07 11:03:55 redhat8 root[2116]: aaaa

可以看到,有一条emerg 级别的日志了

journalctl还可以查看某个时间段的日志

journalctl ‐‐since "时间1" ‐‐until "时间2"

这里since指的是起始时间,until指的是终止时间,整体的意思是查看的是时间1和时间2 之间的日志。例如要查看2023-12-6 13:00:00到2023-12-7 11:00:00且级别要大于等于err的日志

[root@redhat8 ~]# journalctl -p err --since "2023-12-06 13:00:00" --until "2023-12-07 11:00:00"

如果没有写until,则查看的是从since所指定的时间点到现在的日志

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1291735.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 在控制台打印带颜色的信息

#格式:  设置颜色开始 :\033[显示方式;前景色;背景色m #说明: 前景色 背景色 颜色 --------------------------------------- 30 40 黑色 31 41 红色 32 …

Java 对接智谱 AI(官方 sdk 是真垃圾)

官方 sdk 狗屎。 一堆密钥不知道啥玩意,文档也没写好。 python 版本的就不清楚,应该支持会比较好,果然做 ai 应用后端开发还是得使用 python 比较好。 那么要如何对接智谱 AI 呢?用小博哥的这个版本,虽然不是官方的…

UVM验证平台中加入sequencer

sequence机制用于产生激励,它是UVM中最重要的机制之一。在 一个规范化的UVM验证平台中,driver只负责驱动transaction,而不负责产生transaction。sequence机制有两大组成部分,一是 sequence,二是sequencer。如何在验证平…

安防监控系统镜头选型分析,低噪声,低振动,多通道

安防镜头步进驱动选用型号 GC6107 C6109 GC6209 GC6119 GC6129 GC6139 GC6208 GC6150 GC6151 GC6152 GC6125 GC6236采用5V的镜头驱动 。其中GC6107 C6109 GC6209 GC6119 GC6129 GC6139 GC6208关键特性两通道,256细分,低噪,内部和外部时钟…

React 中虚拟DOM是什么,为什么需要它?

注意:本节主要讲React中的虚拟DOM,但是虚拟DOM并不是React中特有的内容。 1. React 中虚拟 DOM是什么? 虚拟DOM是对真实DOM的描述,虚拟DOM是JS对象,实际上就是 JSX 通过 babel 转换成 React.createElement()&#xff…

浴霸市场研究:2023年市场现状及未来发展

据不完全统计,目前我国浴霸行业拥有品牌数量超过250个,市场竞争激烈,主要代表企业有奥普、美的、松桥、松下、澳柯玛、光芒、桑普、来斯奥、飞雕、万家乐等。从未来发展趋势来看,伴随着市场消费升级以及市场需求多元化发展&#x…

道可云专业文旅元宇宙平台整体解决方案,打造沉浸体验新场景

值得注意的是,随着“互联网”时代的到来,元宇宙技术正逐渐成为未来数字经济核心之一。《“十四五”数字经济发展规划》将互联网新基建、数字产业生态系统、数字文娱与数字创新产业视为重点发展领域,其中元宇宙技术在文旅等旅游发挥了不可替代…

【linux系统编程】编辑器gcc/g++

目录 Linux下的编辑器 介绍: 1,编辑器gcc/g 1-1,系统的编译过程 1-2,预处理过程 1-3,编译过程 1-4,汇编过程 1-5,链接过程 Linux下的编辑器 介绍: Linux系统下可支持很多高…

性能优化三步骤(一)——性能分析

从公众号转载,关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、性能分析简介 在完成性能测试之后,需要输出一份性能测试报告,分析系统性能测试的情况。其中测试结果需要包含测试接口的…

Google上架踩坑(最新)

1、目标版本需要大于33 2、平台要求版本>33还需要勾选IDFA广告标识,所以这个也不能忘了 3、打包需要打aab渠道包 4、上传安装包提交之后,如果有报错,再打包需要升版本,不然还会报错 5、2023年11月13号谷歌发的新规定&…

亚马逊自养号测评和真人测评的区别,优劣剖析

大家都知道亚马逊的review对产品listing曝光和流量是有很大影响,但是亚马逊的review又不是那么容易获取的,再加上亚马逊平台风控的不断严苛,所以卖家们想尽办法打造爆款listing是每个亚马逊卖家共同的目标,尤其是当旺季到来时&…

记账中心二开

系统预设了 这几种 FSubSystem 为子系统 T_VC_SubSystem 卡片显示的表 字段 FNeedRalteAccount 设置为1的话 ,需要与总账连用系统将去查找 系统状态控制表。 如果系统状态 没有配置这个子系统 将无法显示数据 select sysStaCtr.fid from T_BD_SystemStatusCt…

销售技巧培训之如何提升销售沟通技巧

销售技巧培训之如何提升销售沟通技巧 现在市场环境竞争越来越激烈,产品越来越过剩,如何把产品卖出去是摆在企业面前的难题。所以打造一致所向披靡的销售团队,提升销售人员的系统化销售能力就显得非常重要。在销售系统培训模块中,…

圆通单号查询,圆通速递物流查询,对需要的单号进行颜色标记

批量查询圆通速递单号的物流信息,并对需要的单号进行颜色标记。 所需工具: 一个【快递批量查询高手】软件 圆通速递单号若干 操作步骤: 步骤1:运行【快递批量查询高手】软件,第一次使用的伙伴记得先注册&#xff0c…

Pandas教程09:DataFrame数据可视化绘制折线图、柱状图、散点图、直方图等

pandas.plot() 是 pandas 库中的一个非常方便的函数,用于绘制各种图形,例如线图、柱状图、散点图等。以下是一些示例用法: 1.绘制一个简单的线图: # Author : 小红牛 # 微信公众号:wdPython import pandas as pd impo…

Kali Linux 2023.4 已经发布了!

开发人员推出了 Kali Linux 2023.4,这是2023 年发行版的第四个也是最后一个版本。 新产品已经可供下载,包含15 个新工具和 GNOME 45。 Offective Security 团队报告称,在今年的最终版本中,操作系统中并没有添加太多新功能&…

【三维重建】多频外差相位展开(C++实现)

在结构光三维重建中,通过相移法求解出来的相位是包裹相位(在 [-π/2,π/2] 间成周期性 ) 我们想要用相位找到相机与投影仪间的对应像素,就需要进行相位展开,确保每一行的相位值是唯一的。 多频外差是相位…

新版idea创建maven项目时的下载问题

新版idea创建时没有一个直接的maven选项 而是一个Maven Archetype选项&#xff0c;我们只需要选择它也是一样的&#xff0c;后面跟着选就行 配置国内下载源的方法如下&#xff1a; 1. 2. 3. 代码&#xff1a; <mirror> <id>alimaven</id> <name>al…

什么是SPA(Single Page Application)?它的优点和缺点是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

K8s中安装calico一直无法启动成功

问题描述 #k8s版本为v1.20.9查看对应日志 #calico-node-xxx 对应pod名称 kubectl logs calico-node-xxxx -n kube-system #没有错误但是一直启动不起来应该是版本不匹配问题解决方案 删除 calico重新安装对应版本删除podskubectl delete -f calico.yaml删除文件 rm -f calico.…