linux log
一、写日志缓存:方式1: printk(linux kernel中存在)数值范围从0到7,数值越小,优先级越高。控制日志:/proc/sys/kernel/printk1 4 1 7# echo 8 > /proc/sys/kernel/printk四个整型数值:当前记录级,缺省记录级,最低记录级和启动时刻的缺省记录级。
http://www.ibm.com/developerworks/cn/linux/l-kernel-logging-apis/
一、写日志缓存:
方式1: printk(linux kernel中存在)
注意,如果调用者未将日志级别提供给 printk
,那么系统就会使用默认值 KERN_WARNING
(表示只有 KERN_WARNING
级别以上的日志消息会被记录。)
数值范围从0到7,数值越小,优先级越高。
控制日志:
/proc/sys/kernel/printk
1 4 1 7
# echo 8 > /proc/sys/kernel/printk
四个整型数值:当前记录级,缺省记录级,最低记录级和启动时刻的缺省记录级。
#define KERN_EMERG "<0>" 系统崩溃
#define KERN_ALERT "<1>"必须紧急处理
#define KERN_CRIT "<2>" 临界条件,严重的硬软件错误
#define KERN_ERR "<3>" 报告错误
#define KERN_WARNING "<4>" 警告
#define KERN_NOTICE "<5>" 普通但还是须注意
#define KERN_INFO "<6>" 信息
#define KERN_DEBUG "<7>" 调试信息
方式2:syslog内核函数(linux kernel中存在)
int syslog(int type, char *bufp, int len); /* No wrapper provided in glibc */ ------- 内核API
*
* 0 -- Close the log. Currently a NOP.
* 1 -- Open the log. Currently a NOP.
* 2 -- Read from the log.
* 3 -- Read all messages remaining in the ring buffer.
* 4 -- Read and clear all messages remaining in the ring buffer
* 5 -- Clear ring buffer.
* 6 -- Disable printk to console
* 7 -- Enable printk to console
* 8 -- Set level of messages printed to console
* 9 -- Return number of unread characters in the log buffer
* 10 -- Return size of the log buffer
*/
方式3:klogctl函数(C库中存在)
#include <sys/klog.h>
int klogctl(int type, char *bufp, int len); --- glibc提供的API
二、写日志文件
方式1:/sbin/klogd -c 1 -x
通过klogctl函数读取,通过syslog系统函数写入日志文件。(注意,此处的syslog不是kernel中的syslog)
方式2:syslogd
二者在busybox库中可以找到。
/etc/syslog.conf
三、读日志:
方式1:文件kmsg
-r-------- 1 root root 0 Dec 22 16:20 /proc/kmsg
方式2:命令dmesg
dmesg is used to examine or control the kernel ring buffer。
打印不带日志级别,其他和/proc/kmsg的内容相同。
方式3:读日志文件??
printk
数值范围从0到7,数值越小,优先级越高。
更多推荐
所有评论(0)