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相关推荐

  1. Linux日志系统分析:rsyslog、syslog和klog

    ubuntu版本:ubuntu-gnome-16.04-desktop-amd64,gnome版 --------------------------------------------------- ...

  2. linux 日志主服务器 syslog

    syslog日志服务 syslog日志的主要用途是系统审计,监测追踪和分析统计,syslog是一个综合的日志记录系统,它主要的功能是方便日志管理和分类存放日志 日志syslog的功能: syslog功 ...

  3. 怎么快速搜索linux的日志,如何快速查看Linux日志?

    因为在生产环境会遇到很多问题,那么最快的定位方式莫过于去看日志,我们都知道服务器每天会产生大量的日志,那么如何快速的定位也就是最关键的. 本文介绍六种查看日志的命令:tail.head.cat.mor ...

  4. linux 日志 停止滚动,linux – syslog在日志轮换后停止记录

    每次newsyslog旋转日志文件后,syslog都会停止登录该文件.直到syslogd重启完成. (myserver:wheel)# logger -p local1.info -t myproce ...

  5. linux日志采集配置,linux下配置rsyslog日志收集服务器案例

    原标题:linux下配置rsyslog日志收集服务器案例 环境配置 centos6系统 client1:192.168.1.33 centos7系统 client2:192.168.1.44 cent ...

  6. Linux集中日志服务器rsyslog(亲测)

    Linux上通常可以通过rsyslog来实现系统日志的集中管理,这种情况下通常会有一个日志服务器,然后每个机器配置自己日志通过rsyslog来写到远程的日志服务器上. 这里假定有两台服务器,一台作为系 ...

  7. Linux集中日志服务器rsyslog

    Linux上通常可以通过rsyslog来实现系统日志的集中管理,这种情况下通常会有一个日志服务器,然后每个机器配置自己日志通过rsyslog来写到远程的日志服务器上. 这里假定有两台服务器,一台作为系 ...

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

    一台服务器的日志对系统工程师来说是至关重要的,一旦服务器出现故障或被入侵,我们需要查看日志来定位问题的关键所在,所以说对于线上跑的服务器而言日志应该合理的处理及管理.下面来介绍下linux系统的sys ...

  9. 【系统审计】syslog协议及其实现日志转发到syslog服务器

    一.syslog协议       linux系统中大部分日志是通过一种syslog机制产生和维护的.syslog是一种协议,分为客户端和服务器端.客户端产生日志,服务器端接收日志.并对接收的日志做出保 ...

最新文章

  1. Oracle中的系统权限管理
  2. IT民工创业之殇---续1
  3. php mysql 多行查找_PHP使用mysqli同时执行多条sql查询语句的实例
  4. Actor-ES框架:Ray
  5. php安装文档,PHP - Manual: 安装 (官方文档)
  6. HDU 4819 Mosaic(二维线段树)
  7. 【14:00开播】国际顶会强力加持,算法“视”界杯巅峰之战拉开帷幕!
  8. 累计收益是我的收益吗?
  9. C#中获去一个字符串中的汉字的个数 C#获取字符串全角的个数
  10. andrioid .9.png图片的制作
  11. 【C++设计模式】抽象工厂模式
  12. JQuery实现灯箱特效
  13. python文字处理dummy_python – 使用’dummy’变量创建数学函数,以便稍后进行评估...
  14. iOS 自定义播放器
  15. android版会说话的汤姆猫游戏源码
  16. 1.CDC绘图。包括加载图片,消去图片,设置图片一部分透明,不闪烁方式。
  17. 在Linux系统中的安装cpolar内网穿透
  18. Java new一个对象
  19. python添加背景音乐
  20. 手机百度浏览器底部fixed悬浮框屏蔽问题,终极解决方案

热门文章

  1. python使用笔记:pyautogui自动化控制鼠标和键盘
  2. Keil调试局部变量显示not in scope的问题解决
  3. NR 5G 运营发布
  4. Windows Server 2016-Netdom Join加域并指定OU (一)
  5. 关于mysql的调优
  6. 转:Object-Runtime的基本数据类型
  7. 外企员工职场跃迁:他们将目光转向杭州 转向云计算
  8. 掘金小册Jenkins大纲准备
  9. java日志统一集成的两种方案
  10. 《iOS 9 开发指南》——第6章,第6.4节 Interface Builder中的故事板——Storyboarding...