linux日志系统分析:rsyslog、syslog、klog
1. syslogd和rsyslogd
syslogd是Linux下的一个记录日志文件服务。从结构来说,可以理解为这个服务下面有一系列的子服务,例如mail、auth、cron、kern等等,这些子服务对外提供日志记录的功能,而当其它的程序或服务需要记录日志的时候,就可以直接调用这些子服务将日志记录到设定的地方。而配置这整个守护进程以及其子服务的地方就是/etc/syslog.conf这个文件。
而目前不少的Linux发行版已经用rsyslogd将syslogd代替了。rsyslogd是syslogd的升级版,其配置语法与syslogd的配置文件一致。ubuntu-gnome-16.04使用的是rsyslogd。
注:
在用户空间有专门用于记录系统日志的程序,统称为“syslog守护进程”。早期及现在的大部分嵌入式系统使用的是klogd+syslogd组合,现在大多数发行版都使用rsyslogd或者syslogd-ng。
如果需要修改系统日志配置,修改以下两个文件。
1)/etc/rsyslog.conf
2)/etc/rsyslog.d/50-default.conf 日志文件的记录规则和路径
操作:
sudo service rsyslog restart
sudo service rsyslog stop
sudo service rsyslog start
2. 查看linux日志的三种途径
1)dmesg
printk()打印的日志会写到kernel ring buffer(环缓冲区)中,dmesg是从kernel ring buffer中读取内核日志信息。
2)/var/log/
系统所有日志(包括用户日志和系统内核日志)均记录在/var/log/目录下。
rsyslogd守护进程根据/etc/rsyslog.conf和/etc/rsyslog.d/50-default.conf,将不同的服务产生的log记录到不同的文件中。
3)/proc/kmsg
通过读取/proc/kmsg也可以得到ring buffer(环缓冲区)的日志,但是对/proc/kmsg进行读操作后,ring buffer中被读取的数据将被清空。
注:如果启用了rsyslogd服务,则不能读取/proc/kmsg 文件(文件为空),同一时间只能用一种方法来获取日志文件。
3. 日志记录的接口
1)内核空间:printk()
可以使用dmesg命令来查看,使用printk()打印的日志同时也会记录在/var/log/kern.log和/var/log/syslog。当然也可以关闭rsyslogd服务,通过读取/proc/kmsg来查看。
2)用户空间:syslog()函数和logger(logger可在命令行中直接执行)
void syslog(int priority, char*format,……);
打印的日志记录在 /var/log/syslog文件中。
注:据自己理解,syslog()打印的日志不会写到kernel ring buffer,只有printk才会写入kernel ring buffer。
4. 自定义日志记录路径
4.1 修改/etc/rsyslog.d/50-default.conf
在文件最后添加如下一行:
local0.* /var/log/my_logfile0
注:local0—local7均可。
4.2 重启Ubuntu
注:试了执行service rsyslog restart 但是无法使规则生效。
4.3 编写代码测试
#include <syslog.h>int main(int argc, char *argv[])
{openlog("test_my_log", LOG_CONS | LOG_PID, LOG_LOCAL0);setlogmask(LOG_UPTO(LOG_NOTICE)); //设置屏蔽低于NOTICE级别的日志信息syslog(LOG_INFO, "log info %s\n", argv[0]);syslog(LOG_ERR, "log err %s\n", argv[0]);syslog(LOG_WARNING, "log warning %s\n", argv[0]);closelog();return 0;
}
1)gcc log.c2)./a.out3)grep test_my_log /var/log/*
结果如下:
/var/log/my_logfile0:Apr 12 20:30:49 ubuntu test_my_log[2456]: log err ./a.out/var/log/my_logfile0:Apr 12 20:30:49 ubuntu test_my_log[2456]: log warning ./a.out/var/log/syslog:Apr 12 20:30:49 ubuntu test_my_log[2456]: log err ./a.out/var/log/syslog:Apr 12 20:30:49 ubuntu test_my_log[2456]: log warning ./a.out可知log信息被记录到my_logfile0,同时也被记录到syslog。
注:
0 debug –有调式信息的,日志信息最多
1 info –一般信息的日志,最常用
2 notice –最具有重要性的普通条件的信息
3 warning –警告级别
4 err –错误级别,阻止某个功能或者模块不能正常工作的信息
5 crit –严重级别,阻止整个系统或者整个软件不能正常工作的信息
6 alert –需要立刻修改的信息
7 emerg –内核崩溃等严重信息
linux日志系统分析:rsyslog、syslog、klog相关推荐
- Linux日志系统分析:rsyslog、syslog和klog
ubuntu版本:ubuntu-gnome-16.04-desktop-amd64,gnome版 --------------------------------------------------- ...
- linux 日志主服务器 syslog
syslog日志服务 syslog日志的主要用途是系统审计,监测追踪和分析统计,syslog是一个综合的日志记录系统,它主要的功能是方便日志管理和分类存放日志 日志syslog的功能: syslog功 ...
- 怎么快速搜索linux的日志,如何快速查看Linux日志?
因为在生产环境会遇到很多问题,那么最快的定位方式莫过于去看日志,我们都知道服务器每天会产生大量的日志,那么如何快速的定位也就是最关键的. 本文介绍六种查看日志的命令:tail.head.cat.mor ...
- linux 日志 停止滚动,linux – syslog在日志轮换后停止记录
每次newsyslog旋转日志文件后,syslog都会停止登录该文件.直到syslogd重启完成. (myserver:wheel)# logger -p local1.info -t myproce ...
- linux日志采集配置,linux下配置rsyslog日志收集服务器案例
原标题:linux下配置rsyslog日志收集服务器案例 环境配置 centos6系统 client1:192.168.1.33 centos7系统 client2:192.168.1.44 cent ...
- Linux集中日志服务器rsyslog(亲测)
Linux上通常可以通过rsyslog来实现系统日志的集中管理,这种情况下通常会有一个日志服务器,然后每个机器配置自己日志通过rsyslog来写到远程的日志服务器上. 这里假定有两台服务器,一台作为系 ...
- Linux集中日志服务器rsyslog
Linux上通常可以通过rsyslog来实现系统日志的集中管理,这种情况下通常会有一个日志服务器,然后每个机器配置自己日志通过rsyslog来写到远程的日志服务器上. 这里假定有两台服务器,一台作为系 ...
- linux内核日志使用syslog,Linux日志系统syslog详解
一台服务器的日志对系统工程师来说是至关重要的,一旦服务器出现故障或被入侵,我们需要查看日志来定位问题的关键所在,所以说对于线上跑的服务器而言日志应该合理的处理及管理.下面来介绍下linux系统的sys ...
- 【系统审计】syslog协议及其实现日志转发到syslog服务器
一.syslog协议 linux系统中大部分日志是通过一种syslog机制产生和维护的.syslog是一种协议,分为客户端和服务器端.客户端产生日志,服务器端接收日志.并对接收的日志做出保 ...
最新文章
- Oracle中的系统权限管理
- IT民工创业之殇---续1
- php mysql 多行查找_PHP使用mysqli同时执行多条sql查询语句的实例
- Actor-ES框架:Ray
- php安装文档,PHP - Manual: 安装 (官方文档)
- HDU 4819 Mosaic(二维线段树)
- 【14:00开播】国际顶会强力加持,算法“视”界杯巅峰之战拉开帷幕!
- 累计收益是我的收益吗?
- C#中获去一个字符串中的汉字的个数 C#获取字符串全角的个数
- andrioid .9.png图片的制作
- 【C++设计模式】抽象工厂模式
- JQuery实现灯箱特效
- python文字处理dummy_python – 使用’dummy’变量创建数学函数,以便稍后进行评估...
- iOS 自定义播放器
- android版会说话的汤姆猫游戏源码
- 1.CDC绘图。包括加载图片,消去图片,设置图片一部分透明,不闪烁方式。
- 在Linux系统中的安装cpolar内网穿透
- Java new一个对象
- python添加背景音乐
- 手机百度浏览器底部fixed悬浮框屏蔽问题,终极解决方案
热门文章
- python使用笔记:pyautogui自动化控制鼠标和键盘
- Keil调试局部变量显示not in scope的问题解决
- NR 5G 运营发布
- Windows Server 2016-Netdom Join加域并指定OU (一)
- 关于mysql的调优
- 转:Object-Runtime的基本数据类型
- 外企员工职场跃迁:他们将目光转向杭州 转向云计算
- 掘金小册Jenkins大纲准备
- java日志统一集成的两种方案
- 《iOS 9 开发指南》——第6章,第6.4节 Interface Builder中的故事板——Storyboarding...