热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux日志管理(1)关于syslogd与klogd

当在linux中工作时,我们发现,提到linux中的日志(log)信息,就会想到syslog,printk中的内核日志&#x

当在linux中工作时,我们发现,提到linux中的日志(log)信息,就会想到syslog,printk中的内核日志,dmesg等等,但却对它们地关系有时候并不清楚。

笔者在接触到Linux的几年中,曾经就被这些log搞得昏头转向,不知道该去哪里找自己需要的log,为了弄清楚这个问题,决定花力气把这个问题搞清楚。

下面的图清楚地表达出了linux中的各种日志,以及日志相关的函数命令的关系。

 

 

从上面的图片中可以看出,linux系统的的log主要分成下面几个部分:

(1)syslogd

(2)klogd

(3)/etc/syslog.conf

(4)用户空间log写log接口,logger/syslog()

(5)内核空间log接口,printk/Log_buf

(6)用户空间对内核空间log的访问接口klogctl()/do_syslog()

 

 

 

我们可以看到LINUX系统信息日志的途径基本有以下2种:

1>dmesg查看----这个命令比较常见

2>/var/log/下的文件

那下面我们就从这个2个途径着手,一步步的走下去.

<一>

首先,我们来看dmesg这个常见的命令背后隐藏的是什么!!

1> 先让我们来MAN一下这个家伙

从LINUX提供的手册,我们可以得知一条最重要的信息dmesg是从kernel 的ring buffer(环缓冲区)中读取信息的

2> 那什么是ring buffer呢?

       在LINUX中,所有的系统信息(包内核信息)都会传送到ring buffer中.而内核产生的信息由printk()打印出来。系统启动时所看到的信息都是由该函数打印到屏幕中。 printk&#xff08;&#xff09;打出的信息往往以<0><2>...这的数字表明消息的重要级别。高于一定的优先级别会打印到屏幕上&#xff0c; 否则只会保留在系统的缓冲区中(ring buffer)。

       至于dmesg具体是如何从ring buffer中读取的,大家可以看dmesg.c源代码.很短,比较容易读懂.

<二>

dmesg怎么搞的大家应该很明白了吧.至于/var/log/下的文件更是大家熟悉得不能再熟悉了!

1> /var/log/..下为什么有这么多文件呢?

      一句话解释: 是syslogd这个守护进程根据/etc/syslog.conf,将不同的服务产生的Log记录到不同的文件中.

    这里的/etc/syslog.conf我就不细说了,很多这方面的信息(去查吧).(如果klogd 和syslogd 都运行&#xff0c;则无论console_loglevel

    为何值&#xff0c;内核消息都将追加到/var/log/messages中&#xff0c;否则按照syslogd的配置文件进行处理。 gram add)

2> 既然知道了,/var/log/..是由syslogd这个守护进程产生的.那就再顺着这条线走下去.

     LINUX系统启动后&#xff0c;由/etc/init.d/sysklogd先后启动klogd,syslogd两个守护进程。

     其中klogd会通过syslog()系统调用或者读取proc文件系统来从系统缓冲区(ring buffer)中得到由内核printk()

    发出的信息.而syslogd是通过klogd来读取系统内核信息.&#xff08;如果klogd没有运行&#xff0c;内核消息就不会传递到用户空间&#xff0c;这种情况下

    只能查看/proc/kmsg 文件 gram add&#xff09;

我想至此,大家心理应该对log产生,读取等一系列的动作有所感觉.

总结一下:

1>   所有系统信息是输出到ring buffer中去的.dmesg所显示的内容也是从ring buffer中读取的.

2> LINUX系统中/etc/init.d/sysklogd会启动2个守护进程:Klogd&&Syslogd

3> klogd是负责读取内核信息的,有2种方式:

            syslog()系统调用(这个函数用法比较全,大家去MAN一下看看)

             直接的对/proc/kmsg进行读取(再这提一下,/proc/kmsg是专门输出内核信息的地方)

4>   Klogd的输出结果会传送给syslogd进行处理,syslogd会根据/etc/syslog.conf的配置把log

      信息输出到/var/log/下的不同文件中.

 

 

 

 

 


推荐阅读
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 我是这样学习Linux下C语言编程的-把程序输出信息加到系统日志里去关键词:Linux系统日志syslog服务程序syslogd ... [详细]
  • IIS服务器配置NXLog进行syslog转发(并解决GMT+8小时时差问题)
    IIS服务器配置NXLog进行syslog转发(并解决GMT+8小时时差问题) ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 服务器上的操作系统有哪些,如何选择适合的操作系统?
    本文介绍了服务器上常见的操作系统,包括系统盘镜像、数据盘镜像和整机镜像的数量。同时,还介绍了共享镜像的限制和使用方法。此外,还提供了关于华为云服务的帮助中心,其中包括产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题和视频帮助等技术文档。对于裸金属服务器的远程登录,本文介绍了使用密钥对登录的方法,并提供了部分操作系统配置示例。最后,还提到了SUSE云耀云服务器的特点和快速搭建方法。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 本文介绍了在PostgreSQL中批量导入数据时的优化方法。包括使用unlogged表、删除重建索引、删除重建外键、禁用触发器、使用COPY方法、批量插入等。同时还提到了一些参数优化的注意事项,如设置effective_cache_size、shared_buffer等,并强调了在导入大量数据后使用analyze命令重新收集统计信息的重要性。 ... [详细]
  • 原文地址:https:blog.csdn.netu011784994articledetails73878822这里是通过对udev的设置,让udev收到内核发来的U盘消息后自动挂 ... [详细]
  • 查看电脑重启日志_详解各个系统主机日志及数据库日志收集AIX、redhat、HPUX等...
    概述今天主要针对主机和数据库日志的一些收集做一下记录总结,下面一起来看看吧~一、主机系统日志收集:创建主机日志收集目录:--UnixLinux创建存放系 ... [详细]
  • 搞懂 ELK 并不是一件特别难的事
    点击下方“民工哥技术之路”,选择“设为星标”回复“1024”获取独家整理的学习资料!本篇文章主要介绍ELK的一些框架组成,原理和实践&#x ... [详细]
  • Flume 开源分布式日志收集系统
    为什么80%的码农都做不了架构师?Flume--开源分布式日志收集系统Flume是Cloudera提供的一个高可用的、高可靠的开源分布式海量日志收集系统 ... [详细]
  • 原文链接Linux下使用sudo命令,可以让普通用户也能执行一些或者全部的root命令。本文就对我们常用到sudo操作情景进行简单分析,通过一些例子来了解sudo命令相关的 ... [详细]
  • 则将追究法律责任。[url]http:future.blog.51cto.com2695983651[url]使用rsync来实现文件同步 ... [详细]
author-avatar
手机用户2502858701
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有