了解linux日志

本章主要介绍Linux中的日志管理
  • 了解rsyslog是如何管理日志的
  • 查看日志的方法
日志中记录了各种各样的问题,所以读取日志是检测并排除故障的一个重要方式,日志文
件默认放在/var/log目录下。不同的问题要读取不同的日志,例如,邮件发不出去,可以读
取/var/log/maillog日志文件;要查看哪些用户试图用ssh登录到本机,可以读
取/var/log/secure日志文件。
在RHEL8/CentOS8中,日志是由rsyslogd服务管理的,不同类别的日志放在哪个文件
中,由/etc/rsyslog.conf决定。
在/etc/rsyslog.conf中可以定义一系列的规则,决定不同类别的日志保存在哪个文件中。
定义规则的格式如下。
1 日志类别.日志级别标准线 文件
如果某个应用程序的日志级别大于等于日志类别后面的级别标准线,则日志会被记录到指
定的文件中,不妨先仔细看完下面的内容。
日志类别包括以下几种。
(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条日志规则,如图19-
1所示。
这里定义了不同类别的日志记录的最低标准,以及记录到哪个文件中。例如,第4条规则
local5类别的日志,如果级别大于等于info,会记录到 file4.log中,如图19-2所示。
现在有一个A应用,在其代码中指定它所使用的日志类别是local5,所以在A应用的日志
生成时,会使用第4条规则。因为第4条规则指定的是如何记录 local5级别的日志。
那么,A应用所产生的日志到底会不会被第4条规则记录呢?主要取决于A应用的日志级别
是否达到规则要求的最低标准。A应用产生的日志级别为debug,而规则4要记录的最低级别 为info, debug的级别低于info。所以,A应用产生的日志没有达到规则4的最低“分数
线”,是不会被记录到file4.log 中的。
19.1 rsyslog的配置
用vim编辑器打开/etc/rsyslog.conf,往下找到RULES关键字#### RULES ####,下面
定义的都是记录日志的规则,去掉对应的注释行之后内容如下。
1 *.info;mail.none;authpriv.none;cron.none /var/log/messages
上面这行*.info中的*表示所有类别的日志,都可以匹配到这条规则,但是要求应用程序的
日志级别要达到info以上才会记录到/var/log/messages中。
但是这里的*要排除mail、authpriv和 cron这三个类别,即这三个类别的日志不匹配这条
规则,因为这三个类别后面写的级别是non。
1 authpriv.* /var/log/secure
这条规则的意思是,只要应用程序产生的日志是authpriv类别的就匹配这条规则,不管日
志是哪个级别的,日志都记录到/var/log/secure中。
1 mail.* ‐/var/log/maillog
这条规则的意思是,只要应用程序产生的日志是mail类别的就匹配这条规则,不管日志是
哪个级别的,日志都记录到/var/log/maillog中。
1 cron.* /var/log/cron
这条规则的意思是,只要应用程序产生的日志是cron类别的就匹配这条规则,不管日志
是哪个级别的,日志都记录到/var/log/cron 中。
1 *.emerg :omusrmsg:*
这条规则的意思是,不管应用程序产生的日志是哪个类别的,只要日志级别是emerg,就
会通知所有人(所有终端都会有消息提醒)。
1 uucp,news.crit /var/log/spooler
这条规则的意思是,只要应用程序产生的日志是uucp或news类别的就匹配这条规则,不
管日志是哪个级别的,日志都记录到/var/log/spooler 中。
1 local7.* /var/log/boot.log
这条规则的意思是,只要应用程序产生的日志是local7类别的就匹配这条规则,不管日志
是哪个级别的,日志都记录到/var/log/boot.log 中。
下面开始自己写一条规则,在vim 编辑模式下,在上面规则的后面添加一条内容。
1 local6.info /var/log/xx.log
这条规则的意思是,只要应用程序产生的日志是 local6类别的就匹配这条规则,但是要求
日志的级别要大于等于info才能记录到/var/log/boot.log中。
保存退出并重启rsyslog,命令如下。
[root@pp ~]# systemctl restart rsyslog.service 
[root@pp ~]# 
下面模拟一个应用程序产生一个类别为local6、级别为debug的日志,命令如下。
[root@pp ~]# logger -p local6.debug "1111"
[root@pp ~]# 
这个命令的意思是,模拟产生一个类别为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@pp ~]# ls /var/log/xx.log
ls: 无法访问'/var/log/xx.log': 没有那个文件或目录
[root@pp ~]# 
现在重新模拟一个 local6级别为info的日志,日志内容为2222,命令如下。
[root@pp ~]# logger -p local6.info "2222"
[root@pp ~]# 
按照上面的分析,这个日志会被记录,且会记录到/var/log/messages和/var/log/xx.log
两个日志文件中,下面来验证一下。
[root@pp ~]# grep 2222 /var/log/messages
Dec  7 19:10:41 pp root[3431]: 2222
[root@pp ~]# cat /var/log/xx.log
Dec  7 19:10:41 pp root[3431]: 2222
[root@pp ~]# 
可以看到,这个日志被记录到两个文件中了。
现在重新模拟—个local6级别为err 的日志,日志内容为3333,命令如下。
[root@pp ~]# logger -p local6.err "3333"
[root@pp ~]# grep 3333 /var/log/messages 
Dec  7 19:11:52 pp root[3442]: 3333
[root@pp ~]# cat /var/log/xx.log 
Dec  7 19:10:41 pp root[3431]: 2222
Dec  7 19:11:52 pp root[3442]: 3333
[root@pp ~]# 
19.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 命令来查看,命令如下。
[root@pp ~]# journalctl 
-- Logs begin at Thu 2023-12-07 18:50:25 CST, end at Thu 2023-12-07 19:11:52 CST. --
12月 07 18:50:25 pp kernel: Linux version 4.18.0-348.el8.x86_64 (mockbuild@x86-vm-09.build.eng.bos>
12月 07 18:50:25 pp kernel: Command line: BOOT_IMAGE=(hd
直接输人“journalctl”,会显示系统所有的日志。此时显示了一页的日志,按【Esc】键
可以退出来,按【Enter】键可以一行一行地往下显示,按空格键可以一页一页地往下显
示。
如果想查看最新的日志,命令如下。
[root@pp ~]# journalctl -f
-- Logs begin at Thu 2023-12-07 18:50:25 CST. --
12月 07 19:10:06 pp rsyslogd[3241]: [origin software="rsyslogd" swVersion="8.2102.0-5.el8" x-pid="3241" x-info="https://www.rsyslog.com"] exiting on signal 15.
12月 07 19:10:06 pp systemd[1]: rsyslog.service: Succeeded.
此处日志仍然处于打开状态,不会看到终端提示符,如果此时日志有变化,这里会继续输
出。按【Ctrl+C】组合键退出。
如果想查看日志中某级别以上的日志,可以加上“-p级别”选项来查看。例如,查看
emerg级别的日志,命令如下。
[root@pp ~]# journalctl -p emerg 
-- Logs begin at Thu 2023-12-07 18:50:25 CST, end at Thu 2023-12-07 19:11:52 CST. --
-- No entries --
[root@pp ~]# 
没有任何输出,说明系统中暂时没有emerg级别的日志。我们先模拟一个类别为local6、
级别为emerg的日志,命令如下。
[root@pp ~]# logger -p local6.emerg "xxxx"
[root@pp ~]# 
Broadcast message from systemd-journald@pp (Thu 2023-12-07 19:21:34 CST):root[3550]: xxxxMessage from syslogd@pp at Dec  7 19:21:34 ...root[3550]:xxxx
然后再次查看所有emerg 级别以上的日志,命令如下。
[root@pp ~]# journalctl -p emerg 
-- Logs begin at Thu 2023-12-07 18:50:25 CST, end at Thu 2023-12-07 19:21:34 CST. --
12月 07 19:21:34 pp root[3550]: xxxx
可以看到,有一条emerg 级别的日志了。
journalctl还可以查看某个时间段的日志,格式如下。
1 journalctl ‐‐since "时间1" ‐‐until "时间2"
这里since指的是起始时间,until指的是终止时间,整体的意思是查看的是时间1和时间2
之间的日志。例如,要查看自2021-10-6 20:00:00到2021-10-0710:18:00且级别要大于等于
err 的日志,命令如下。
[root@pp ~]# journalctl -p err --since "2023-12-6 20:00:00" --until "2023-12-07 10:00:00"
-- Logs begin at Thu 2023-12-07 18:50:25 CST, end at Thu 2023-12-07 19:21:34 CST. --
[root@pp ~]# 
如果没有写until,则查看的是从since所指定的时间点到现在的日志。

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

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

相关文章

好用免费的AI换脸5个工具

在当今社会的发展中,人工智能(Artificial Intelligence, AI)扮演着关键的角色,其应用领域不断扩展。作为AI的一个分支,换脸技术近年来备受欢迎。这项技术使得将一个人的面部特征迁移到另一个人的照片或视频成为可能。除…

膜结构建筑:未来体育可持续发展的绿色引擎

随着城市化的飞速发展,现代建筑迫切需要创新性的解决方案,而膜结构建筑以其独特的设计理念和可持续性特点,正在成为未来城市发展的重要引擎。本文将深入探讨膜结构建筑在可持续城市发展中的关键作用,包括其在节能减排、资源有效利…

软著项目推荐 疫情数据分析与3D可视化 - python 大数据

文章目录 0 前言1 课题背景2 实现效果3 设计原理4 部分代码5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 大数据全国疫情数据分析与3D可视化 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐&#xff0…

探索正则可视化工具:让编程更直观、高效

导语:在当今的编程世界中,正则表达式已成为不可或缺的技能。然而,理解和编写正则表达式往往是一项具有挑战性的任务。为了降低门槛,提高编程效率,正则可视化工具应运而生。 一、正则表达式的简介与历史 正则表达式&a…

Python小案例:while练习题

目录 while练习题:1、存款多少年能翻倍2.小球坠落长度计算3、猴子吃桃4、计算:1-23-4...99-100的和 while练习题: 1、存款多少年能翻倍 1万本金,年利息:0.0325,求连本带息多少年能翻倍 解析:…

AI烟火识别智能视频分析系统解决方案

引言 随着城市化进程的加快和高科技的迅猛发展,传统的消防系统逐渐显露出局限性。在这种背景下,AI烟火识别智慧消防解决方案应运而生,它融合了最新的AI技术,旨在提高火灾的预防、检测、应对和控制能力,保护人民生命财…

mysql的组合查询

mysql的组合查询 1、mysql的内连接查询 在 MySQL 中,内连接(INNER JOIN)是一种根据两个或多个表之间的匹配条件,将多个表中的数据进行联接的操作。内连接只返回符合联接条件的行,而不会返回未匹配的行。 内连接的语…

C# WPF上位机开发(抽奖软件)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 每到年末或者是尾牙的时候,很多公司都会办一些年终的清楚活动,感谢员工过去一年辛苦的付出。这个时候,作为年会…

二叉树题目:翻转二叉树以匹配前序遍历

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题:翻转二叉树以匹配前序遍历 出处:971. 翻转二叉树以匹配前序遍历 难度 5 级 题目描述 要求 给定一个二叉树的根结点 root \texttt{roo…

单电源、轨到轨输入输出、高精度运放MS8551/8552/8554

产品简述 MS8551/8552/8554 是输入输出轨到轨的高精度运算放大器,它 有极低的输入失调电压和偏置电流,单电源电压范围为 1.8V 到 5V 。 轨到轨的输入输出范围使 MS8551/8552/8554 可以轻松地放大高 电平和低电平的传感信号。所有特性使得 MS8…

「薄荷绿」风电智慧运营,有效提高运营效率和能源利用率

随着能源需求的不断增加和全球变暖的加剧,人们对可再生能源的依赖程度不断提高。其中,风能作为一种可再生能源,其清洁、环保、无污染等特点备受青睐,其发展也越来越受到政府和企业的关注。然而,由于风能的不稳定性和不…

项目管理:为什么项目计划必不可少

项目管理计划定义了如何执行、监督和控制项目。项目计划让我们准确地知道在项目的每个阶段应该做什么,在哪里分配资源和时间,以及在事情超出计划或超出预算时要注意什么。 为了项目中获得成功,管理者需要在前期创建一个项目计划&#xff0c…

如何在 PyQt 中实现异步数据库请求

需求 开发软件的时候不可避免要和数据库发生交互,但是有些 SQL 请求非常耗时,如果在主线程中发送请求,可能会造成界面卡顿。这篇博客将会介绍一种让数据库请求变得和前端的 ajax 请求一样简单,且不会阻塞界面的异步请求方法。 实…

hive映射es表任务失败,无错误日志一直报Task Transitioned from NEW to SCHEDULED

一、背景 要利用gpt产生的存放在es种的日志表做统计分析,通过hive建es的映射表,将es的数据拉到hive里面。 在最初的时候同事写的是全量拉取,某一天突然任务报错,但是没有错误日志一直报:Task Transitioned from NEW t…

Nature Communications 高时空分辨率的机器人传感系统及其在纹理识别方面的应用

前沿速览: 现有的触觉传感器虽然可以精确的检测压力、剪切力和应变等物理刺激,但还难以像人类手指一样通过滑动触摸,同时获取静态压力与高频振动来实现精确的纹理识别。为了解决这一问题,来自南方科技大学的郭传飞团队提出了衔接…

Angular 由一个bug说起之三:为什么时不时出现额外的水平/垂直滚动条?怎样能更好的防止它的出现?

目录: 什么是单元溢出 控制滚动条出现的属性 怎样能减少意外的滚动条出现 一、什么是单元溢出 在说到这个问题之前我们先简单阐述一下视图窗口(Viewport)和视图内容(View Content) 视图窗口简单来说就是呈现内容的视口,浏览器就是一个窗口&#xff…

安装Centos7

作者:余小小 下载VMware15 参考:http://t.csdnimg.cn/saS9S 下载镜像 这里使用网易镜像库下载 网易开源镜像站http://mirrors.163.com/ 网易Centos下载http://mirrors.163.com/centos/7.7.1908/isos/x86_64/ 安装Centos系统(基础设施&…

C++初阶(十四)list

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、 list的介绍二、list的模拟实现1、list的节点2、list 的迭代器3、list4、打印5、完整代码…

[LeetCode]-283. 移动零-1089. 复写零

目录 283. 移动零 描述 解析 代码 1089. 复写零 描述 解析 代码 283. 移动零 283. 移动零https://leetcode.cn/problems/move-zeroes/ 描述 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 &…

数据结构与算法编程题50

假设不带权有向图采用邻接矩阵G存储,设计实现以下功能的算法。 (1)求出图中每个顶点的出度。 (2)求出图中出度为0的顶点数。 (3)求出图中每个顶点的入度。 //参考博客:https://blog.…