syslog 与 Linux 内核日志系统全面解析

基于syslog实现项目的日志收集 syslog 是 Linux 和其他类 Unix 操作系统中用于存储系统日志的标准协议。它不仅定义了如何记录事件,还规定了这些事件应该如何在网络上传输。在 Linux 系统中,syslog 通常由一个守护进程(daemon)来管理,这个守护进程负责接收来自不同应用程序和服务的日志信息,并将它们写入到适当的文件或通过网络发送给其他服务器。 阅读详情

在 Linux 系统中,日志是进行系统调试、故障排查和系统安全分析的重要手段。syslog 和内核日志是 Linux 日志组成的核心组件。本文将从原理、实现、配置、常见问题分析等综合解析,全面解读 Linux 下的日志机制。


在这里插入图片描述

一、syslog 系统概述

1.1 什么是 syslog

syslog 是 Unix/类 Unix 系统中的日志协议和日志实现方案,用于收集、分类、输出、转发各类日志信息。

1.2 syslog 主要组件

  • syslogd :系统日志实现进程,接收程序或内核发来的日志
  • klogd :内核日志转发进程,读取 /proc/kmsg 或 /dev/kmsg
  • /dev/log :Unix socket 文件,用于 syslogd 接收日志
  • logger :简单方便的命令行日志发送工具

二、内核日志机制 (printk)

2.1 printk 是什么

Linux 内核中常用的日志输出函数,功能类似于 userspace 中的 printf,但其结果会被写入内核 ring buffer,并由 klogd 转发给 syslogd

2.2 printk 级别

级别对应定义说明
KERN_EMERG0系统无法使用
KERN_ALERT1需立即处理
KERN_CRIT2严重错误
KERN_ERR3普通错误
KERN_WARNING4警告
KERN_NOTICE5重要信息,但不是错误
KERN_INFO6普通信息
KERN_DEBUG7调试信息

2.3 查看内核日志

dmesg             # 查看内核启动日志
cat /proc/kmsg    # 直接读取内核日志 buffer

注意: /proc/kmsg 只能被一个进程打开,通常是 klogd 或 journald


三、syslogd 日志处理流程

  1. user-space 程序调用 syslog()
  2. 通过 /dev/log unix socket 发送日志
  3. syslogd 监听 /dev/log
  4. 根据配置 /etc/syslog.conf 分类/路由/转发
  5. 写入 /var/log/messages、/logdir/messages、或其他指定路径

四、日志保存地点和常见文件

文件作用
/var/log/messages系统总日志
/var/log/syslog系统日志 (Debian/有的发行)
/var/log/kern.log内核日志
/var/log/auth.log身份验证日志
/dev/logsyslog 通信套接字

在很多小型嵌入式 Linux 系统中,日志不写入 /var/log/,而是自定义路径(例如 /logdir/messages)


五、日志无法保存或乱定问题分析

5.1 日志无法保存的常见原因

  • 未启动 syslogd 或 klogd
  • /dev/log 文件不存在,无法接收日志
  • syslogd 输出路径配置错误
  • 文件系统只读,无法写入

5.2 日志时间乱定问题

  • 无 RTC :启动时间为 1970-01-01
  • 无网,无 NTP 同步,无法维持时间正确
  • 日志不会覆盖,但日期可能回跳,造成分析困难

六、日志转储和管理

6.1 logrotate 作用

logrotate 是 Linux 上常用日志转储管理工具,支持指定时间/文件大小转储、压缩、删除、绑定服务重启等操作

6.2 嵌入式 Linux 无 logrotate 常见做法

  • 用 shell 脚本配合 du + gzip + rm 手动清理
  • 通过 cron 或微应用 daemon 每日归档
  • 将 /logdir 挂载到 tmpfs,重启自动清空

七、实际经验问题分析

7.1 问题:启动后 /var/log 为空,无日志

  • 分析:syslogd 未启动,或者输出路径配置为其他目录
  • 解决:检查 /etc/rc.d/init.d/syslog、 /etc/rc.conf,确保 -O 路径正确

7.2 问题:日志文件不断增长,系统卡死

  • 分析:未启动转储机制,或者 logrotate 未配置
  • 解决:手动转储 + gzip,最好配合 cron 定时运行

7.3 问题:日志无法分类,所有内容都输出到一个文件

  • 分析:/etc/syslog.conf 配置不合理
  • 解决:根据 facility.priority 格式分配路径

7.4 问题:时间戳混乱,日志回退

  • 分析:无 RTC,系统每次启动时间为固定初始值
  • 解决:
    • 手动 date -s 设置时间
    • 启动时从 flash 文件恢复上次时间
    • 启用 NTP 或增加 RTC 芯片

7.5 问题:syslogd 启动无效或日志路径不生效

  • 分析:启动脚本未加载正确参数变量
  • 解决:检查 /etc/sysconfig/syslog 是否设置了 SYSLOGD_OPTIONS,确认 /etc/rc.d/init.d/syslog 是否使用该变量启动

八、嵌入式系统最佳实践建议

项目建议
日志写入路径确认 syslogd -O 参数,避免写入错路径
日志时间建设 RTC ,无 RTC 前置恢复上次时间
转储机制最好配合 logrotate,否则手写 shell 管理
日志分类配置 syslog.conf,把不同类型的日志分别写入文件
内核日志转发确保 klogd 或 journald 运行正常
关键事件打日志在关键代码中使用 syslog() 添加日志,有助调试
确认是否存在 /dev/log若无,则程序无法通过 syslog() 发日志

九、结语

日志系统是 Linux 中最基本也最容易被忽视的模块之一。syslogd + klogd 的组合在嵌入式 Linux 系统中依然广泛使用,相较 systemd-journald 机制,它更轻量、可定制性更强。

掌握日志配置、输出机制、日志路径管理和日志时间机制,对于系统开发者、调试人员以及维护工程师都是非常重要的技能。希望本文能帮助你从宏观与细节上全面理解 Linux 下日志系统的运行逻辑,发现问题并灵活应对。

如需进一步深入某部分内容(如 logrotate 配置详解、syslog.conf 实战编写、journalctl 与 syslog 的协同),欢迎在评论区提出。

日志审计-syslog日志外发 不同的 Linux 版本,syslog 服务名可能为 syslog,也可能为 rsyslog;以下以 syslog为例说明。Linux 主机所有的日志文件一般都在/var/log 下,默认只是不记录 FTP 的 活 动 ,Linux系统的日志文件是可以配置的,Linux syslog设备依据两个重要的文件:/etc/syslogd守护进程和/etc/syslog.conf 配置文件。通过将需要处理的日志发送到 日志审计日志审计中心就可以采集到 Linux 主机的日志信息了。 阅读详情

相关推荐

Linux 内核调试排错:从 dmesg 8 种日志级别到 printk 优先级配置实战

本文深入探讨了Linux内核调试排错的核心技术,重点解析了dmesg的8种日志级别和printk优先级配置的实战应用。通过环形缓冲区机制、动态调试控制和日志级别调整等技巧,帮助开发者高效诊断内核模块加载失败、硬件驱动问题等复杂场景,提升系统故障排查效率。

weixin_29587015的博客 240

syslog详解及配置远程发送日志和远程日志分类

1、日志协议syslog 1.1、syslog简介 完善的日志分析系统应该能够通过多种协议(包括syslog等)进行日志采集并对日志分析,因此日志分析系统首先需要实现对多种日志协议的解析。其次,需要对收集到的海量日志信息进行分析,再利用数据挖掘技术,发现隐藏再日志里面的安全问题。 Syslog再UNIX系统中应用非常广泛,它是一种标准协议,负责记录系统事件的一个后台程序,记录内容包括核心、系统程序的运行情况及所发生的事件。Syslog协议使用UDP作为传输协议,通过514端口通信,Syslog使用syslo

huangbaokang的博客 4万+

Linux内核:进程管理——Linux系统日志

syslog 是一种工业标准的协议,用来记录设备的日志。Linux日志系统由系统日志监控程序syslogd和内核日志监控程序klogd组成,两个监控程序都是守护程序(daemon),且都注册成了系统服务。syslogd专门记录非内核的其他设备所产生的日志,当系统的控制权由系统交给init的时候,日志信息的记录由syslogd负责记录。Klogd主要负责内核所产生的日志。内核日志记录信息由dmesg /var/log/dmesg查看。

m0_74282605的博客 1835

Linux syslog介绍(Linux、UNIX系统中一种标准消息记录系统。可记录操作系统或应用程序运行时产生的事件信息:警告、错误信息、状态信息等)/var/log/syslog协议Rsyslog

Syslog是Linux和UNIX系统中的一种标准消息记录系统。它可以记录操作系统或者应用程序运行时产生的各种事件信息,如警告、错误信息和状态信息等。在Linux系统中,这些信息通常被发送到文件。本文将深入探讨Linux syslog,从syslog协议的概述,到syslog的配置,以及如何使用syslog来查看和管理日志。

Dontla的博客 5865

Linux日志系统全解析:Syslog、Auditd与Secure日志的实战选型指南

在Linux系统运维与安全领域,日志记录是监控系统状态、排查故障和进行安全审计的基础技术。其核心原理是通过不同层级的机制捕获系统事件,并将这些信息结构化存储,为问题诊断和合规性检查提供关键数据支撑。从技术价值看,一个设计良好的日志策略能显著提升运维效率,满足安全合规要求,并助力构建可观测性体系。常见的应用场景包括日常服务监控、安全事件溯源以及等保、PCI-DSS等合规审计。本文聚焦于Linux系统中三种核心日志机制:作为通用日志路由器的Syslog、提供内核级细粒度审计的Auditd,以及专注于认证事件的S

weixin_30768881的博客 345

【Linux 系统调试】syslog:Linux 系统日志工具详解

在 Linux 和类 Unix 操作系统中,syslog是一个用于集中记录、管理和传输系统日志信息的标准协议和工具集。它不仅负责内核之外的大部分应用程序日志收集工作,还支持将日志发送到本地文件、远程服务器、数据库甚至通过电子邮件通知管理员。掌握syslog的工作机制和配置方法,对于系统运维、安全审计、故障排查具有重要意义。是一种工业标准协议(RFC 5424),定义了如何在网络设备之间传递日志信息。在 Linux 系统中,通常指的是运行在本地的syslog 守护进程(如rsyslogd或。

以实战经验介绍行业知识 2699

linux下的syslog日志的详解

linux的日志记录了linux系统的每天发生的各种事情,用户可以用日志来分析错误发生的原因或者寻找到***时***者留下的痕迹。日志最主要的功能是审计和监测,他还可以实时的监测系统状态,监测和追踪侵入者。linux系统有三个主要的日志子系统,连接时间日志,进程统计日志,和错误日志(syslog).下面我们来详解一下syslog日志各种系统守护进程,用户程序和内核通过sysl...

weixin_34008805的博客 745

10、Linux 日志系统:syslog 与按需日志记录全解析

本文深入解析了Linux日志系统的核心机制,重点介绍了syslog的架构、协议和使用方法,并探讨了按需日志记录的实现方式。内容涵盖syslog消息的生成与路由、日志级别与设施的作用、syslogd守护进程的配置以及动态控制日志详细程度的技术方案。此外,还提到了syslog的优点与局限性,并简要介绍了其替代方案,帮助读者更好地管理和调试程序,提升系统的可靠性和可维护性。

2y3u4i5o6p的博客 164

Linux内核调试利器——printk

在Linux开发环境下,打印log一直是最有效的调试方式,内核开发也不例外。先看一下下面这段代码:#include <linux/init.h> #include <linux/module.h>MODULE_LICENSE("Dual BSD/GPL"); MODULE_AUTHOR("Wang Shuxiao");static int hello_init(void) { printk(

shuxiaogd的专栏 2080

10、Linux日志系统与事件处理:syslog与logmuxd的深度解析

本文深入解析了Linux系统中的日志机制,重点介绍了syslog的使用、日志设施、协议、配置及优缺点,并探讨了其替代方案。同时,还详细阐述了logmuxd的功能与应用场景,展示了其在复杂日志处理和事件广播方面的优势。文章通过实际案例比较了syslog与logmuxd的适用场景,并展望了未来日志系统的发展趋势,为读者提供了选择合适日志系统的实用建议。

gpu4optimizer的博客 45

Ubuntu20.04安全重启后WiFi图标消失?MT7922网卡驱动修复全攻略

本文详细解析了Ubuntu20.04安全重启后WiFi图标消失的问题,特别是针对MT7922网卡驱动失效的情况。通过诊断命令和分步解决方案,包括禁用PCIe ASPM、更新无线固件和升级HWE内核,帮助用户快速恢复网络连接。文章还提供了进阶排查技巧和系统优化建议,确保WiFi稳定运行。

weixin_29202687的博客 368

从内核日志到用户空间:探索Linux日志系统的演进与设计哲学

本文深入探讨了Linux日志系统的演进与设计哲学,从内核环形缓冲区(ring buffer)到用户空间接口(/dev/kmsg、/proc/kmsg)的实现细节。通过分析dmesg工具和现代日志服务(如systemd-journald)的架构演变,揭示了Linux日志系统在可靠性、性能和易用性方面的持续优化,为系统管理员提供了实用的配置建议和故障排查技巧。

kappa的博客 482

告别拼音!用VSCode+Dosbox-X搞定汇编语言课程设计里的中文姓名显示

本文详细介绍了如何利用VSCode和Dosbox-X解决汇编语言课程设计中中文姓名显示的问题。通过配置开发环境、理解GB2312编码及正确使用汇编指令,学生可以告别拼音显示,实现中文字符的正确输出。文章还提供了完整的代码示例和常见问题排查方法,帮助读者快速掌握这一实用技能。

weixin_30872337的博客 424

Printk的loglevel和日志记录分析

Printk的loglevel和日志记录分析(分析版本是ubuntu7.10,内核源码是2.6.23) 首先,printk有8个loglevel,定义在中,其中数值范围从0到7,数值越小,优先级越高。#define    KERN_EMERG      ""      /* system is unusable     */ 系统崩溃#define    KERN_ALERT 

brfeng的专栏 4207

测试用例经典练习之微信发红包测试用例

微信发红包测试用例

ZCYaiCLX3344的博客 1万+

llama.cpp部署大模型

llama.cpp如何部署大模型

Eddy的博客 973

linux日志级别(loglevel)详解

linux日志级别(loglevel)详解     |字号 订阅 前几天,我在想printk中到底是哪些信息会打印到console上,哪些东西可以通过dmesg来查看。参考了网上一些资料以及自己做的一些实,总结一下Linux中的console loglevel以及printk, dmesg知识。   只有当printk打印信息时的loglev

风无言 9098

基于YOLOv8的水果新鲜程度检测系统设计与实现

数据采集与预处理模块:负责收集水果图像数据并进行标注和增强深度学习模型:基于YOLOv8的目标检测模型新鲜度评估模块:根据检测结果评估水果新鲜程度用户界面:提供友好的交互界面系统集成:将各模块整合为完整系统水果新鲜程度检测需要包含多种水果在不同新鲜度状态下的图像数据集。:包含5种常见水果(苹果、香蕉、橙子、葡萄、草莓)在不同新鲜度下的图像包含约8,000张图像,分为新鲜和腐烂两类AgriVision:大型农业图像数据集,包含水果检测和分类任务Fruit-360:包含120种水果的高质量图像。

YOLO 444

Linux syslog日志系统详解

一. syslog简介         syslog是一种工业标准的协议,可用来记录设备的日志。在UNIX系统,路由器、交换机等网络设备中,系统日志(System Log)记录系统中任何时间发生的大小事件。管理者可以通过查看系统记录,随时掌握系统状况。UNIX的系统日志是通过syslogd这个进程记录系统有关事件记录,也可以记录应用程序运作事件。通过适当的配置,我们还可以实现运行syslog协议

求索 1万+

RK3566/RK3568 Android 11 无操作自动隐藏导航栏、底部上拉显示导航栏

RK3566/RK3568 Android 11 定制大全在系统服务中增加无操作自动隐藏导航栏方法,在上层app动态调用无操作自动隐藏导航栏方法,系统会在5秒无操作后自动隐藏导航栏,隐藏导航栏后从底部上拉可显示导航栏,设备关机和重启后也能继续生效。

qq_23921815的博客 1257

prplOS介绍

介绍prplOS是什么,特性、框架、编译等。

四儿家的小祖宗的博客 2118

深入解析Linux Syslog机制

syslog 常被称为系统日志或系统记录,系统日志通过 syslog 进程记录系统的有关事件,也可以记录应用程序运作事件。通过适当配置,甚至可以实现运行 syslog 协议的机器之间的通信。早期的 syslog 日志服务对应的是 syslogd 守护进程,而目前很多 linux 发行版本已经使用 rsyslog 服务替换了 syslog 服务预装在 linux 系统中了,相应的守护进程就变成了rsyslogd(ubuntu 18中已经更新为 rsyslog)。日志一般都在/var/log目录下。

2502_92917225的博客 1250

复现论文《大规模风电场电磁暂态高效建模仿真方法》

本文提出了一种针对大规模风电场电磁暂态(EMT)仿真的高效建模方法。通过三种关键技术实现仿真加速:(1)永磁直驱风电机组一体化等效建模,采用节点导纳矩阵降维将25节点机组简化为4端子电路,仿真速度提升1-3个数量级;(2)基于戴维南/诺顿等效和OpenMP并行计算的风电场整体建模,通过串并联叠加实现节点收缩,30台机组仿真加速近万倍;(3)受控源映射解耦方法提高故障仿真灵活性。复现代码展示了核心算法实现,包括导纳矩阵Schur补降维、多进程并行计算框架以及受控源解耦方法。

huanghm88的专栏 276

linux内核日志使用syslog,Linux日志系统syslog详解

一台服务器的日志对系统工程师来说是至关重要的,一旦服务器出现故障或被入侵,我们需要查看日志来定位问题的关键所在,所以说对于线上跑的服务器而言日志应该合理的处理及管理.下面来介绍下linux系统的syslog日志服务器.一.syslog详解1,syslog简介syslog 系统日志,记录linux系统启动及运行的过程中产生的信息,rhel5.x系统上默认自带了syslog 其配置文件是/etc/sy...

weixin_42569329的博客 4977

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Linux日志系统_syslog服务详解

linux日志

a1809032425的博客 6525

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Linux-shell篇之日志系统syslog

Linux上的日志系统 syslog syslog-ng:开源 syslog服务: syslogd:系统,非内核产生的信息 klogd:内核,专门负责记录内核产生的日志信息 配置文件:/etc/syslog.conf 服务状态查看命令:service syslog status kernel --> 物理终端(/dev/console) --> /var/log/dmesg #dmes...

yaoyujie157的博客 959

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: Linux 日志系统全解析:从系统日志到内核日志,精准定位问题日志
下一篇: 原来 C++ 这么简单:每日十题轻松学 (Day 4 多态与 RTTI 篇)
嵌入式孙老师
博客等级 码龄7年 5686粉丝 898原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值