发布时间:2014-09-05 16:35:17作者:知识屋
1. BSD syslogd的组成结构:
从上图可以看到相关的日志文件主要来源于三种途径:
(1) 内核:
许多内核例程调用log函数产生log消息,另外klogd守护进程能够监听并得到内核消息,并发送给syslogd进程。
(2) 许多用户进程直接调用syslog函数产生日志消息。
(3) 来自于TCP/IP网络连接的日志消息。该消息可能来自于自身的某个用户进程或者其它网络主机上的一个用户进程。端口是514.
我们主要讨论第二种情况下产生的日志消息。跟syslog相关的主要以下三个函数:
openlog:
ident主要被用于加在日志消息中,一般是用某个程序名来代替。如cron, inetd等。
option则是许多选项的位屏蔽,常见的选项见下表:
facility参数设置的目的是可以通过配置文件对不同设施的消息将以不同的方式进行处理。常见的facility见下表:
openlog(“dhcp6c”, LOG_NDELAY|LOG_PID, LOG_DAEMON);
syslog:
priority参数可以是facility与level的组合,其中level可取的值如下表:
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服务器,
2. 内核消息日志的显示以及printk函数的日志级别:
从前面的图2-1中可以看到,函数printk先将消息打印到环形缓冲区_logbuf中,并将消息传给控制台进行显示,控制台驱动程序然后根据控制台的日志级别显示日志消息。
常见的日志级别如下表:(数字越低,代表级别越高!)
跟日志级别相关的几个常量:
#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
【引申】fprintf函数可以将结果输出到指定的流,如stdout, stderr以及stdin,或者是某个具体的文件流
摘自 陈立龙的专栏
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能