Linux 日志级别


前言

`

本教程的目的是了解各种 linux 内核日志级别、它们的组织方式,以及我们如何根据消息的严重性设置应在控制台上显示哪些消息。


一、Linux 内核日志级别简介

1.介绍

Linux 内核日志文件的管理是服务器管理的一个重要方面:日志可以简单地通知我们守护程序的状态,或者显示关键消息或警告。在本教程中,我们将看到 linux 内核使用的各种类型的日志级别,它们如何划分严重性,以及如何根据日志级别过滤控制台上显示的消息。

2. Linux 内核日志级别

基本上有八个日志级别,由linux内核发送消息,日志级别从高到低,level 0 ~ level 7 。

级别简述:

 0 KERN_EMERG 
 这是按严重性排序的最高级别:它被有关系统不稳定或即将崩溃的消息采用。

 1 KERN_ALERT    
 此级别用于立即需要用户注意的情况。

 2 KERN_CRIT
 此严重性级别用于通知与硬件或软件相关的严重错误。

 3 KERN_ERR
 通常用于通知用户非关键错误,例如设备识别失败或有问题,或者更一般的驱动程序相关问题。

 4 KERN_WARNING
 或 loglevel 它是大多数 Linux 发行版中通常用作默认值的日志级别。此级别用于显示有关非即将发生的错误的警告或消息。

 5 KERN_NOTICE
 此级别的消息是关于可能值得注意的事件。

 6 KERN_INFO
 此级别的消息用于有关内核执行的操作的信息性消息的日志级别。

 7 KERN_DEBUG
 此级别的消息主要用于调试。

3.如何检查当前默认日志级别

检查系统上使用的默认日志级别非常容易。我们要做的就是检查文件的内容。它实际上并不在磁盘上,而是由内核创建并在内存中维护的系统状态的可视化表示。在这种情况下,我们可以运行以下命令来查询有关系统中设置的默认控制台日志级别的信息。

运行

[root@localhost ~]# cat /proc/sys/kernel/printk
4	4	1	7

[root@localhost ~]# sysctl kernel.printk
kernel.printk = 4	4	1	7

这是命令的典型输出:

4       4       1       7

输出介绍

第一个值:	第一个值是电流,这就是我们正在寻找的信息:在本例中,该值表示当前使用的日志级别。如前所述,这意味着只有采用高于其严重性级别的消息才会显示在控制台上。console_loglevel4

第二个值:	此值自动用于没有特定日志级别的消息:如果消息未与日志级别关联,则将使用此消息。default_message_loglevel

第三个值:	它指示可用于 的最低日志级别。这里使用的级别是,最高。minimum_console_loglevelconsole_loglevel 1

最后的值:	这是引导时使用的默认日志级别。default_console_loglevelconsole_logleve l

4.更改默认控制台日志级别

在某些情况下,我们可能想要更改该值,让我们看看如何更改。

我们可以使用最直接的方法是将新值写入文件。但是,这是一个临时解决方案,新设置计算机重新启动不会保留。假设我们要将默认控制台日志级别更改 ,以下是我们要运行的内容:

$ echo "3" | sudo tee /proc/sys/kernel/printk

或者,直接使用该帐户:root

echo "3" > /proc/sys/kernel/printk

通过查看文件的内容,我们可以验证loglevel现在是否是我们在命令中指定的级别:

$ cat /proc/sys/kernel/printk
3       4       1       7

我们可以使用以下命令获得相同的结果:

sudo sysctl -w kernel.printk=3

要以持久的方式更改默认日志级别,我们必须修改文件,在启动时将参数传递给内核命令行:

vim /etc/default/grub

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="loglevel=3 resume=UUID=df5a0685-43f8-433a-8611-57335a10ca8d"
GRUB_DISABLE_RECOVERY="true"

上面是 /etc/default/grub 文件的内容,主要修改的内容是:loglevel=3

GRUB_CMDLINE_LINUX="loglevel=3"

修改文件并保存更改后,重新加载 grub,以便在下次重新启动时应用新配置:执行此操作的命令取决于我们正在运行的发行版。

$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg

在基于 Debian 的发行版上,使用以下命令:

$ sudo update-grub

grub 配置将被更新,在下次重新启动时,指定的日志级别将被采用为默认值。

结论

在本教程中,我们学习了如何根据其严重性级别组织 linux 内核日志。我们还看到了如何更改默认设置,以便使用相同的条件在控制台上仅显示内核发送的某些消息。最后,我们看到了如何持久化这些更改。

<think>好的,用户想了解Linux系统中日志级别的定义和用法,特别是与syslog相关的部分。我需要先回忆syslog的基本知识,然后整理日志级别的分类和用途。 首先,syslog是Linux的日志记录系统,负责收集和处理系统及应用程序的日志信息。根据引用[1]和[2],syslog的配置文件是/etc/syslog.conf(在较新系统可能是rsyslog.conf),通过配置可以将不同级别的日志写入不同文件。 接下来,日志级别的定义。记得syslog定义了8个级别,从0到7,按严重性递增排列。可能需要确认每个级别的名称和对应的数值,比如emerg是最高级别,debug是最低。需要确保这些信息准确,可能需要参考提供的引用内容,但用户提供的引用中并没有详细列出级别,但根据常见知识,这些级别应该是正确的。 然后,每个级别的使用场景需要解释清楚,例如emerg表示系统不可用,alert需要立即处理,crit是严重情况,err是错误,warning是警告,notice是普通但重要,info是常规信息,debug调试信息。要举例子说明,比如kernel报错可能用crit,ssh登录失败用info或notice? 还要说明在syslog配置中的用法,比如如何指定级别。根据引用[2],配置语法是facility.level action,比如cron.*表示所有级别的cron日志,而mail.err表示mail的err及以上级别。用户可能想知道如何设置只记录某个级别以上的日志,比如使用.error表示error及以上。 另外,可能需要提到通配符*的使用,以及如何忽略同步(用-号),如引用[2]中的例子。但用户的问题主要是关于日志级别,这部分可能不需要展开,但可以简要提及。 最后,生成相关问题需要考虑用户可能的后续疑问,比如如何配置特定级别的日志,查看日志的方法,syslog和rsyslog的区别,自定义日志级别等。根据用户提供的示例,问题应该围绕级别定义、配置、查看工具、服务区别和自定义展开。 检查是否有遗漏,比如syslog的设施(facility)部分,但用户的问题明确是关于日志级别,所以设施可以简要提到,但不深入。确保回答结构清晰,分点说明级别、使用场景、配置方法,然后相关问题。</think>### Linux日志级别定义与syslog使用解析 #### 一、日志级别定义 Linux syslog定义了**8种日志级别**(按严重性降序排列): 1. **$0: emerg$**(紧急) 系统不可用,需立即处理(如硬件故障导致系统崩溃)[^3] 2. **$1: alert$**(警报) 需立即采取行动(如关键系统组件损坏) 3. **$2: crit$**(严重) 严重错误状态(如磁盘损坏导致数据丢失) 4. **$3: err$**(错误) 常规错误(如服务启动失败) 5. **$4: warning$**(警告) 非错误性警告(如磁盘空间不足) 6. **$5: notice$**(通知) 普通但重要事件(如系统守护进程启动) 7. **$6: info$**(信息) 一般运行信息(如SSH登录成功) 8. **$7: debug$**(调试) 调试级详细信息 #### 二、配置语法规则 在`/etc/rsyslog.conf`(或`/etc/syslog.conf`)中使用格式: $$facility.level \quad action$$ 例如: - `cron.* /var/log/cron.log` 记录所有cron日志 - `mail.err /var/log/mail.err` 记录mail相关错误及以上级别日志 - `*.emerg -/var/log/panic.log` 记录所有紧急日志并关闭同步[^2] #### 三、典型应用场景 1. **内核日志**:使用`kern`设施,如`kern.crit`记录严重内核错误 2. **认证日志**:使用`authpriv`设施,如`authpriv.info`记录SSH登录信息 3. **邮件日志**:使用`mail`设施,如`mail.warning`记录邮件队列异常 #### 四、日志查看工具 ```bash # 查看最近包含error级别的日志 journalctl -p err # 实时监控ssh相关日志 tail -f /var/log/secure | grep sshd ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值