syslog介绍
syslog是一种标准工业协议, 也可以说它是一款服务,它可以用来记录UNIX主机系统设备的日志信息,也可以检测网络设备,如交换机,路由器等。syslog协议也可以实现机器间通信,继而分析这些网络日志行为,追踪和掌握设备与网络的状况。
syslog所产生的日志不仅可以写往本地,也可以通过网络发送到接受syslog的服务器,实现统一的监控,接受syslog的服务器可以对多个设备的syslog消息的服务器进行统一的存储,或者解析其中的内容做相应的处理。
应用场景:网络管理工具,安全系统管理工具,日志审计系统等。
日志格式
一个完成的syslog日志应该包含产生日志的程序模块(Facility)、严重性(Sevenrity或level)、时间、主机名或IP、进程名,进程ID和正文(描述日志信息)。
在UNIX/Linux系统上可以根据Facility和Sevenrity的组合来决定记录什么样的日志信息以及写入哪个日志文件,或者是否需要发送到一个syslog服务器等。但由于标准制定的较晚,导致syslog的格式是非常随意的,我们有时无法正确解析出日志文件所包含的信息。
一个普通的syslog日志格式:
时间 主机名 进程名 进程ID 正文描述
进程名一般是我们自己指定的一个字符串,在下面将函数时会细讲,进程ID有时候是没有的,这时候中括号也没有。如下图:
我们在上面的格式中并没有看到所谓的程序模块(Facility)、严重性(Sevenrity或level)。这是在我的主机上显示的结果,严格来说在时间的前面应该有一个PRI部分。如下:
PRI 时间 主机名 进程名 进程ID 正文描述
PRI是一个尖括号包含的数字,如:<30> 。
这个数字包含了程序模块(Facility)、严重性(Sevenrity或level),这个数字是由Facility乘以8,再加上Severity后得来的。

日志是如何写入的?

1、Linux C中提供了一套写入日志的接口:openlog,syslog,closelog
2、Linux下每个用户都有一个一直运行的syslog守护进程:
我的理解为,openlog函数负责打开与syslog守护进程通信的描述符,syslog函数负责传入日志信息,syslog守护进程负责分析我们传入的参数,进而决定写入上面样的日志信息,以及写进哪些位置。closelog负责关闭用于于syslog守护进程通信的描述符。
函数分析

#include <syslog.h>
void openlog(const char *ident, int option, int facility);
void syslog(int priority, const char *format, ...);
void closelog(void);

日志的实现主要有以下三个函数:
void openlog(const char *ident, int option, int facility); ---- 打开

参数:
1、ident ---- 传入一个信息,加载每条日志里面,这个参数就是可以由我们指定的进程名。
2、option ---- 打开方式,一般以或(|)的方式指定多种打开方式
LOG_CONS:如果信息发送给syslogd时发生错误,直接将信息输出到终端
LOG_NDELAY立即打开与系统日志的连接(通常,在产生第一条日志信息的情况下才会打开与日记系统的连接)
LOG_NOWAIT在记录日志信息时,不等待可能的子进程的创建
LOG_ODELAY类似于LOG_NDELAY,日记系统在调用syslog函数时才创建
LOG_PERROR将信息写入日志的同时,也发送到标准错误输出
LOG_PID每条日志信息包括进程号
3、facility ---- 指定写入的数据类型
LOG_AUTH——认证系统:login、su、getty等
LOG_AUTHPRIV——同LOG_AUTH,但只登录到所选择的单个用户可读的文件中
LOG_CRON——cron守护进程
LOG_DAEMON——其他系统守护进程,如routed
LOG_FTP——文件传输协议:ftpd、tftpd
LOG_KERN——内核产生的消息
LOG_LPR——系统打印机缓冲池:lpr、lpd
LOG_MAIL——电子邮件系统
LOG_NEWS——网络新闻系统
LOG_SYSLOG——由syslogd(8)产生的内部消息
LOG_USER——随机用户进程产生的消息
LOG_UUCP——UUCP子系统
LOG_LOCAL0~LOG_LOCAL7——为本地使用保留

void syslog(int priority, const char *format,...);  --- 使用

参数:
priority ---- 指明日志信息的严重级别优先级类型,有以下几种选项:
LOG_EMERG——紧急情况
LOG_ALERT——应该被立即改正的问题,如系统数据库破坏
LOG_CRIT——重要情况,如硬盘错误
LOG_ERR——错误
LOG_WARNING——警告信息
LOG_NOTICE——不是错误情况,但是可能需要处理
LOG_INFO——情报信息
LOG_DEBUG——包含情报的信息,通常旨在调试一个程序时使用
format---指定要写入的数据,示例如下:
syslog(LOG_INFO, "%d, log info test...", count);
void closelog(void);  ---- 关闭
示例代码
  1. #include <stdio.h>
  2. #include <syslog.h>
  3. int main(int argc, char *argv[])
  4. {
  5. openlog(argv[0], LOG_CONS | LOG_PID, LOG_USER);
  6. int count = 0;
  7. while(count < 5)
  8. {
  9. syslog(LOG_INFO, "%d, log info test...", count);
  10. ++count;
  11. }
  12. closelog();
  13. return 0;
  14. }
配置文件
syslog日志服务的主要文件有以下两个:
1、/var/log --- 日志文件保存在此目录下
根据不同的类型,分有不同的日志文件:
dmesg  内核引导信息日志
message 标准系统错误信息日志 (上述分析的日志格式就是按照此类型分析的)
maillog 邮件系统信息日志
cron 计划任务日志
secure 安全信息日志
2、/etc/syslog.conf或者/etc/rsyslog.conf  ---- 配置文件
主要内容如下:
# rsyslog v5 configuration file
# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
#### MODULES ####
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog   # provides kernel logging support (previously done by rklogd)
#$ModLoad immark  # provides --MARK-- message capability
# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514
# Provides TCP syslog reception   ## 指明syslog服务提供TCP网络日志的接受
#$ModLoad imtcp
#$InputTCPServerRun 514  ## 端口514
#### GLOBAL DIRECTIVES ####
# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# File syncing capability is disabled by default. This feature is usually not required,
# not useful and an extreme performance hit
#$ActionFileEnableSync on
# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf
##### 重要的是下面这部分,指明了不同类型日志存放的位置
#### RULES ####
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure
# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog
# Log cron stuff
cron.*                                                  /var/log/cron
# Everybody gets emergency messages
*.emerg                                                 *
# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler
# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log

注意,我用加粗标注的信息,每条信息都可分为两部分,日志类型----存放路径。
日志类型可分为两个字段:选择条件,重要级。两者之间用点(.)隔开。
选择条件:
选择条件是对消息类型的一种分类,这种分类便于人们把不同的消息发送到不同的位置。syslog配置上允许出现一个以上的选择条件,不同条件之间必须以分好(;)隔开。
kern                内核信息;
user                用户进程信息;
mail                电子邮件相关信息;
daemon          后台进程相关信息;
authpriv            包括特权信息如用户名在内的认证活动;
cron                计划任务信息;
syslog          系统日志信息
lpr             打印服务相关信息。
news            新闻组服务器信息
uucp                uucp 生成的信息

local0----local7        本地用户信息
重要级:
表示消息的紧急程序。下面按严重程度由低到高。
debug       不包含函数条件或问题的其他信息
info            提供信息的消息
none        没有重要级,通常用于排错
notice      具有重要性的普通条件
warning     预警信息
err         阻止工具或某些子系统部分功能实现的错误条件
crit            阻止某些工具或子系统功能实现的错误条件
alert           需要立即被修改的条件
emerg       该系统不可用
不同的服务类型有不同的优先级,数值较大的优先级涵盖数值较小的优先级,比如,只指定了一个“notice”,而没有指定其他,其实默认涵盖了“debug”“info”“none”。
存放路径
日志信息可被记录到多个文件里,还可以发送端命名管道,其他程序深圳另一台机器。
主要如下:
file                    指定文件的绝对路径
terminal 或 prin        完全的串行或并行设备标志符
@host(@IP地址)    远程的日志服务器

syslog日志服务相关推荐

  1. linux启动日志服务命令,linux命令:syslog日志服务-系统缩减之增加日志服务功能...

    syslog 服务: syslogd:系统日志服务,非内核产生的信息 klogd:内核日志服务,专门负责记录内核产生的日志信息 service syslog restart 重启日志服务 servic ...

  2. linux syslog日志服务

    2019独角兽企业重金招聘Python工程师标准>>> 简介   不同的Linux发行版使用不同syslog程序来记录系统日志. 的Debain 4.0/Ubuntu8.04(桌面版 ...

  3. linux syslog日志

    一.syslog协议介绍 二.syslog函数 三.Linux syslog配置 一.syslog协议介绍 1.介绍 在Unix类操作系统上,syslog广泛应用于系统日志.syslog日志消息既可以 ...

  4. 同步syslog日志到服务端

    目录结构 前言 Windows下安装syslog服务端(Syslog Watcher Manager) java同步日志代码块 日志同步测试 前言 系统同步日志到syslog服务器,此文章记录以下内容 ...

  5. 使用Elasticsearch+filebeat+logstach+kibana构建日志服务平台

    背景 devops中日志服务的搭建 收集各个节点(agent)的日志文件进ES集群,并提供分析和查询的服务 各个agent的filebeat收集服务不能终断,也就是需要动态reload配置文件 支持用 ...

  6. linux日志服务是哪个,『学了就忘』Linux日志管理 — 2.日志服务rsyslogd

    1.日志文件格式 只要是由日志服务rsyslogd记录的日志文件,他们的格式是一样的. 基本日志格式包含以下内容: 事件产生的时间. 发生事件的服务器的主机名. 产生事件的服务名或程序名. 事件的具体 ...

  7. 云原生架构下日志服务数据预处理

    简介:本篇实践将以某家国际教育机构为例,为大家详细介绍云原生架构下日志服务数据预处理以及对应的解决方案和最佳实践操作手册,方便用户快速对号入座,解决云原生架构下的常见日志难题. 直达最佳实践:[htt ...

  8. history linux 日志服务器_编译bash实现history的syslog日志记录

    一.编译BASH实现bash的syslog日志记录功能 1. 本文将通过bash软件实现history记录到syslog日志的功能,并通过该方式可以实现实时的传送到了远端的日志集中服务器上,可以实现操 ...

  9. syslog打印不带等级_syslog之一:Linux syslog日志系统详解

    目录: 一.syslog简介 syslog是一种工业标准的协议,可用来记录设备的日志.在UNIX系统,路由器.交换机等网络设备中,系统日志(System Log)记录系统中任何时间发生的大小事件.管理 ...

最新文章

  1. 计算机网络-TCP拥塞控制
  2. 记一次内存溢出的分析经历——使用thrift
  3. 第三部分:Android 应用程序接口指南---第二节:UI---第八章 Toast通知
  4. java中将date插入mysql中date_JAVA 处理时间 - java.sql.Date、java.util.Date与数据库中的Date字段的转换方法[转]...
  5. Linux Shell脚本 - 什么是Shell
  6. java 反射api_Java的反射API
  7. 手把手教你制作好看实用的可视化驾驶舱
  8. Leetcode 每日算法一题*****#495. 提莫攻击
  9. 我做PM(项目经理)这段时间...
  10. PAT 乙级 1011. A+B和C (15) Java版
  11. 高德地图JS-API (超简单Get新技能√)
  12. python扫雷总结与体会_扫雷项目总结
  13. JavaSE第八章 IO流
  14. Ubuntu 16.04LTS+NVIDIA@GT620M+CUDA6.5环境搭建总结
  15. 【Unity游戏开发】不接SDK也能在游戏内拉起加QQ群操作?
  16. Apache JMeter 5.1.1 Win 10 环境变量配置
  17. 使用excel进行数据挖掘(4)---- 突出显示异常值
  18. QQ聊天窗口上的广告与QQ弹窗广告的完美屏蔽去除
  19. linux发邮件到126,使用126邮箱发送邮件的python脚本
  20. 【话题】如何看待AI人工智能

热门文章

  1. vxwork任务切换分析
  2. google adsence 盛情
  3. 【每日一题】039 手机尾数
  4. AddressBook 地址簿  (电话簿) 访问与修改-IOS开发
  5. 考证大全 | 证券从业资格考试
  6. Cesium:加载GeoServer-WMS服务
  7. 零基础新手小白学编程必会的100个代码
  8. springboot毕设项目社区分享系统的实现与分析48ig8(java+VUE+Mybatis+Maven+Mysql)
  9. Xcode The 'Apple Push Notification' feature is only available to users enrolled in Apple Develo.
  10. [CIKM 2019]Balance in Signed Bipartite Networks