linux 中的log
由于内核的特殊性,我们不能使用常规的方法查看内核的信息。下面介绍几种方法。
1 printk()打印内核消息。
2 管理内核内存的daemon(守护进程)
Linux系统当中最流行的日志记录器是Sysklogd,Sysklogd 日志记录器由两个守护进程(klogd syslogd)和一个配置文件(syslog.conf)组成。klogd 不使用配置文件,它负责截获内核消息,它既可以独立使用也可以作为 syslogd 的客户端运行。syslogd 默认使用 /etc/syslog.conf 作为配置文件,它负责截获应用程序消息,还可以截获 klogd 向其转发的内核消息。支持 internet/unix domain sockets 的特性使得这两个工具可以用于记录本地和远程的日志。
3 dmesg命令
dmesg用来显示开机信息,kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。
more /var/log/dmesg
4 /proc/kmsg
这个文件用于检索用printk生成的内核消息。任何时刻只能有一个具有超级用户权限的进程可以读取这个文件。也可以用系统调用syslog检索这些消息。通常使用工具dmesg或守护进程klogd检索这些消息。
/proc/kmsg 的log 是单纯的内核log
开机时,一部分的log会通过串口到串口log,通过printk等级来决定
其他全部到/proc/kmsg ,这是一个缓存ring buffer
5.syslogd 这个是当systemd进程起来后,应用层的log 都会写入一个内存缓存中,
像logread 和logcat 都是从这个内存缓存中读出log,这个是可以通过LOGI,LOGD来配置log等级的
一般这个缓存中的log会被写入文件中,以防丢失,但目前移远没有这么做,因为这个缓存有10m,够用了
关于syslogd klogd的描述
可以参考:
https://blog.csdn.net/weixin_30362233/article/details/98494787