linux 输出日志 1 与2,linux日志机制syslogd总结

1.     BSD syslogd的组成结构:

uid-25365622-id-4205872.html

从上图可以看到相关的日志文件主要来源于三种途径:

(1)    内核:

许多内核例程调用log函数产生log消息,另外klogd守护进程能够监听并得到内核消息,并发送给syslogd进程。

(2)    许多用户进程直接调用syslog函数产生日志消息。

(3)    来自于TCP/IP网络连接的日志消息。该消息可能来自于自身的某个用户进程或者其它网络主机上的一个用户进程。端口是514.

uid-25365622-id-4205872.html

我们主要讨论第二种情况下产生的日志消息。跟syslog相关的主要以下三个函数:

uid-25365622-id-4205872.html

openlog:

ident主要被用于加在日志消息中,一般是用某个程序名来代替。如cron, inetd等。

option则是许多选项的位屏蔽,常见的选项见下表:

uid-25365622-id-4205872.html

facility参数设置的目的是可以通过配置文件对不同设施的消息将以不同的方式进行处理。常见的facility见下表:

uid-25365622-id-4205872.html

openlog(“dhcp6c”, LOG_NDELAY|LOG_PID, LOG_DAEMON);

syslog:

priority参数可以是facility与level的组合,其中level可取的值如下表:

uid-25365622-id-4205872.html

syslog(LOG_ERR, “open error for %s:  %m”, filename)

syslog(LOG_ERR|LOG_LPR, “open error for %s:  %m”, filename)

format则是格式化的出错消息字符串。

setlogmask: 用来设置记录日志的优先级,即只记录指定优先级的日志消息。

setlogmask(LOG_ERR) ----- 仅仅记录ERR级别的日志消息

setlogmask(LOG_UPTO(LOG_ERR))----- 记录ERR以及之前的所有日志消息

syslogd配置文件:(/etc/syslog.conf)

主要用来控制如何处理facility|priority的log消息,如存放到某个指定的文件中,或者发送到指定的log服务器,

uid-25365622-id-4205872.html

2.     内核消息日志的显示以及printk函数的日志级别:

从前面的图2-1中可以看到,函数printk先将消息打印到环形缓冲区_logbuf中,并将消息传给控制台进行显示,控制台驱动程序然后根据控制台的日志级别显示日志消息。

常见的日志级别如下表:(数字越低,代表级别越高!)

uid-25365622-id-4205872.html

跟日志级别相关的几个常量: #defineconsole_loglevel (console_printk[0]) 控制台的日志级别,凡是优先级高于这个值的消息将在控制台上显示。它的初始值是default_console_loglevel,这个值可以通过klogd –cn(n为设置的级别)进行修改,不过要注意的是在修改之前,必须先杀掉klogd进程。 #define default_message_loglevel  (console_printk[1])  默认消息日志级别,当printk没定义优先级时使用这个值 #define minimum_console_loglevel  (console_printk[2])  最小控制台日志级别,控制台日志级别可被设置的最小值 #define default_console_loglevel  (console_printk[3])  默认的控制台日志级别,这个值可以通过sys_syslog系统调用进行修改。 Ps:这四个常量值可以通过/proc/sys/kernel/printk文件进行查看和修改。可以通过以下方式修改当前的日志级别:                                                              echo 8 > /proc/sys/kernel/printk

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值