linux 打印级别控制

1、查看当前控制台的打印级别
 cat /proc/sys/kernel/printk
 4    4    1    7
 其中第一个“4”表示内核打印函数printk的打印级别,只有级别比他高的信息才能在控制台上打印出来,既 0-3级别的信息

2、修改打印
 echo "新的打印级别  4    1    7" >/proc/sys/kernel/printk

3、不够打印级别的信息会被写到日志中可通过dmesg 命令来查看

 4、printk的打印级别


#define KERN_EMERG        "<0>" /* system is unusable */
#define KERN_ALERT         "<1>" /* action must be taken immediately */
#define KERN_CRIT            "<2>" /* critical conditions */
#define KERN_ERR             "<3>" /* error conditions */
#define KERN_WARNING   "<4>" /* warning conditions */
#define KERN_NOTICE       "<5>" /* normal but significant condition */
#define KERN_INFO            "<6>" /* informational */
#define KERN_DEBUG       "<7>" /* debug-level messages */

5、printk函数的使用

      printk(打印级别  “要打印的信息”)

       打印级别  既上面定义的几个宏

6、写驱动时还有一套与printk对应的接口

dev_emerg, KERN_EMERG
dev_alert, KERN_ALERT
dev_crit, KERN_CRIT
dev_err, KERN_ERR
dev_warn, KERN_WARNING
dev_notice, KERN_NOTICE
dev_info, KERN_INFO

在linux/device.h文件中:
#define dev_printk(level, dev, format, arg...)    \
    printk(level "%s %s: " format , dev_driver_string(dev) , (dev)->bus_id , ## arg)

#ifdef DEBUG
#define dev_dbg(dev, format, arg...)        \
    dev_printk(KERN_DEBUG , dev , format , ## arg)
#else
static inline int __attribute__ ((format (printf, 2, 3)))
dev_dbg(struct device * dev, const char * fmt, ...)
{
    return 0;
}
#endif


<think>嗯,用户想了解在Linux中如何控制日志打印等级,特别是syslog的日志级别配置。首先,我需要回忆一下syslog的相关知识。syslog是Linux系统中常用的日志服务,负责收集、处理系统日志。用户提到的syslog.conf和rsyslog.conf应该就是配置文件了,对吗? 根据之前的引用资料,syslog.conf用于配置syslogd服务,而rsyslog的配置结构是基于facility、severity和destination的模式。比如引用[2]提到格式是[facility-level].[severity-level] [destination]。那日志等级应该就是severity-level部分,比如debug、info、error这些级别。 接下来,用户需要具体的配置方法。首先可能需要确定系统使用的是哪种syslog服务,是传统的syslogd还是rsyslog?引用[4]提到在CentOS上rsyslog已经预装,所以可能现在大多数系统都用rsyslog了。安装和验证步骤可以参考引用[4],比如用rpm命令检查是否安装,或者查看版本。 然后,配置文件中如何设置日志级别?比如,想控制某个设施的日志级别,比如mail设施的info级别及以上日志记录到某个文件。那配置行应该是mail.info /var/log/mail.log,这样对吗?这里facility是mail,severity是info,目标文件是mail.log。用户可能需要知道不同设施和级别的含义,比如设施有auth、kern、user等,级别从debug到emergency。 另外,动态日志级别调整可能也是用户需要的。比如通过logger命令或者系统命令临时修改日志级别,而不用重启服务。比如引用[3]提到备份配置文件,可能修改配置后需要重启rsyslog服务,但用户可能想知道是否有动态的方法。 还有,内核日志级别控制可能涉及到dmesg和sysctl的设置,比如kernel.printk参数。这部分可能需要解释如何通过/proc/sys/kernel/printk来调整控制台日志级别。 最后,用户可能需要验证配置是否生效,比如发送测试日志,或者查看日志文件是否有预期的内容。比如使用logger -p user.debug "测试信息"来生成日志,然后检查对应的日志文件。 可能用户的需求是调整某个服务的日志详细程度,比如调试时需要更详细的debug日志,而生产环境只记录error以上。这时候需要指导他们如何修改配置文件中的severity级别,并重启服务使配置生效。 还需要注意权限问题,修改系统配置文件可能需要root权限,比如使用sudo或者直接以root用户编辑/etc/rsyslog.conf文件。同时,提醒用户备份配置文件,如引用[3]中的cp命令备份,避免配置错误导致的问题。 总结一下,回答应该分步骤讲解配置方法,包括配置文件的位置、语法结构、设施和级别的定义,示例配置,动态调整方法,以及验证步骤。还要注意引用提供的资料中的相关信息,确保准确性。</think>### Linux系统日志打印等级控制方法 在Linux系统中,日志级别控制主要通过syslog协议实现,以下是具体配置方法: #### 一、syslog日志等级定义 syslog定义了8种日志级别(从高到低): $$0.\ emerg \quad 1.\ alert \quad 2.\ crit \quad 3.\ err \quad 4.\ warning \quad 5.\ notice \quad 6.\ info \quad 7.\ debug$$ #### 二、配置文件结构 syslog配置文件路径为$ /etc/rsyslog.conf $(rsyslog版本)[^2],基本语法格式为: ``` [facility].[severity] [destination] ``` 例如: ``` *.info;mail.none /var/log/messages ``` #### 三、配置步骤 1. **修改配置文件** ```bash # 备份配置文件 sudo cp /etc/rsyslog.conf /etc/rsyslog.conf_bak ``` ```bash # 编辑配置文件 sudo vi /etc/rsyslog.conf ``` 2. **配置示例** ```bash # 记录所有info及以上级别日志到messages文件 *.info /var/log/messages # 记录kernel的warning及以上级别日志 kern.warning /var/log/kern.log # 排除mail模块的debug日志 mail.debug /var/log/mail.log ``` #### 四、动态日志级别调整 1. **logger命令测试** ```bash logger -p user.debug "测试debug级别日志" ``` 2. **内核日志级别控制** ```bash # 查看当前内核日志级别 cat /proc/sys/kernel/printk # 设置控制台日志级别 echo "6 4 1 7" > /proc/sys/kernel/printk ``` #### 五、服务重启 ```bash sudo systemctl restart rsyslog ``` [^1]: syslog.conf基本格式定义 : rsyslog结构化配置模式 [^4]: rsyslog服务验证方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值