简介
syslog机制负责记录内核和应用程序产生的日志信息,管理员可以通过查看日志记录,来掌握系统状况。

日志格式
规定syslog消息的UDP报文不能超过1024字节,并且全部由可打印的字符组成。完整的syslog消息由3部分组成,分别是PRI、HEADER和MSG。大部分syslog都包含PRI和MSG部分,而HEADER可能没有。
如下是一条syslog消息:
<31>Jun 12 19:50:07 zsir syslog_test[3910]: debug-level message.
<31>是PRI部分,其中高5位为Facility,低3位为Severity;
Jun 12 19:50:07 zsir是HEADER部分;
syslog_test[3910]: debug-level message.是MSG部分;

转自http://www.cnblogs.com/skyofbitbit/p/3674664.html,这篇博文对syslog格式有更详细的说明

日志生成
在linux系统中提供了四个函数用于生成系统日志:

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

openlog函数(打开日志设备) :
ident - 标记,添加到每行日志前,通常用当前程序名。
option - 选项,常用值为LOG_PID即包含每个消息的PID,更详细信息参考man syslog
facility - 记录日志的程序的类型,配置文件可根据不同的登录类型来区别处理消息,常用值LOG_DAEMON即其它系统守护进程,一般为自己创建的守护进程。更详细信息参考man syslog

syslog函数(生成日志) :
priority - 优先级,说明消息的重要性,可取值如下:
LOG_EMERG 系统不可用
LOG_ALERT 消息需立即处理
LOG_CRIT 重要情况
LOG_ERR 错误
LOG_WARNING 警告
LOG_NOTICE 正常情况,但较为重要
LOG_INFO 信息
LOG_DEBUG 调试信息

closelog函数(关闭日志设备)。

vsyslog 函数(与syslog函数功能相同,具体用法参考man syslog)。

C接口使用用例
简洁版:

#include <syslog.h>int main(int argc, char **argv)
{openlog("syslog_test", LOG_PID, LOG_DAEMON);syslog(LOG_EMERG, "system is unusable");syslog(LOG_ALERT, "action must be taken immediately");syslog(LOG_CRIT, "critical conditions");syslog(LOG_ERR, "error conditions");syslog(LOG_WARNING, "warning conditions");syslog(LOG_NOTICE, "normal, but significant, condition");syslog(LOG_INFO, "informational message");syslog(LOG_DEBUG, "debug-level message");closelog();return 0;
}

宏定义版:

#include <stdio.h>
#include <syslog.h>
#include <sys/types.h>
#include <unistd.h>#define log_debug(fmt, ...)      syslog(LOG_DEBUG, fmt, ##__VA_ARGS__)
#define log_info(fmt, ...)       syslog(LOG_INFO, fmt, ##__VA_ARGS__)
#define log_notice(fmt, ...)     syslog(LOG_NOTICE, fmt, ##__VA_ARGS__)
#define log_warning(fmt, ...)    syslog(LOG_WARNING, fmt, ##__VA_ARGS__)
#define log_error(fmt, ...)      syslog(LOG_ERR, fmt, ##__VA_ARGS__)
#define log_crit(fmt, ...)       syslog(LOG_CRIT, fmt, ##__VA_ARGS__)
#define log_alert(fmt, ...)      syslog(LOG_ALERT, fmt, ##__VA_ARGS__)
#define log_emerge(fmt, ...)     syslog(LOG_EMERG, fmt, ##__VA_ARGS__)int main(int argc, char **argv)
{openlog("syslog_test", LOG_PID, LOG_DAEMON);log_debug("debug-level message");log_info("informational message");log_notice("normal, but significant, condition");log_warning("warning conditions");log_error("error conditions");log_crit("critical conditions");log_alert("action must be taken immediately");log_emerge("system is unusable");closelog();return 0;
}

日志处理
生成的日志将会发送到一个日志处理守护进程,这个守护进程通过其配置信息来决定日志的处理,
大致的处理有:
1. 记录到系统日志中
2. 输出到系统控制台上
3. 转发给指定的用户
4. 转发给syslog服务器
守护进程一般为syslogd,其配置文件为/etc/syslog.conf;
或为syslog-ng这个是升级版的日志处理守护进程,其配置文件为/etc/syslog-ng/syslog-ng.conf
/etc/syslog.conf 参考资料 man syslog.conf
/etc/syslog-ng/syslog-ng.conf 参考资料 man syslog-ng.conf

linux - syslog详解相关推荐

  1. linux syslog详解-------未测试

    原文:http://www.cnblogs.com/skyofbitbit/p/3674664.html linux syslog详解 分三部分 一.syslog协议介绍 二.syslog函数 三.l ...

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

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

  3. linux系统服务详解 用于Linux系统服务优化

    linux系统服务详解 用于Linux系统服务优化 服务名        必需(是/否)用途描述        注解 acon              否       语言支持        特别支 ...

  4. Linux 目录详解 树状目录结构图

    1.树状目录结构图 2./目录 目录 描述 / 第一层次结构的根.整个文件系统层次结构的根目录. /bin/ 需要在单用户模式可用的必要命令(可执行文件):面向所有用户,例如:cat.ls.cp,和/ ...

  5. Linux系统服务详解

    Linux系统服务详解 服务,其实就是运行在操作系统后台的一个或者多个应用程序,为计算机系统或用户提供某项特定的服务.服务通常是不中断运行的,随时准备接受请求,从而提供某项服务.下面详细介绍下linu ...

  6. 《Linux命令详解手册》——Linux畅销书作家又一力作

    关注IT,更要关心IT人,让系统管理员以及程序员工作得更加轻松和快乐.鉴于此, 图灵公司引进了国外知名出版社John Wiley and Sons出版的Fedora Linux Toolbox: 10 ...

  7. Linux系统详解 系统的启动、登录、注销与开关机

    Linux系统详解 第六篇:系统的启动.登录.注销与开关机 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://johncai.blo ...

  8. 每天一个linux命令(25):linux文件属性详解

    每天一个linux命令(25):linux文件属性详解 Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或修改的时间等内容.具体情况如下 ...

  9. c linux time微秒_学习linux,看这篇1.5w多字的linux命令详解(6小时讲明白Linux)

    用心分享,共同成长 没有什么比每天进步一点点更重要了 本篇文章主要讲解了一些linux常用命令,主要讲解模式是,命令介绍.命令参数格式.命令参数.命令常用参数示例.由于linux命令较多,我还特意选了 ...

最新文章

  1. 数据结构——算法之(010)( 字符串的左旋转操作)
  2. python之⾯向对象-多态
  3. 《用Python进行自然语言处理》第 5 章 分类和标注词汇
  4. 分享经济:我的,就是你的
  5. MySQL查询出2门及2门以上不及格者的平均成绩
  6. VTK:InfoVis之WordCloudDemo
  7. java算法编程题_【java题目】考验你编程能力和算法的时候到了
  8. css中分区显示php,CSS中7个你必须知道属性
  9. this 自引用指针
  10. iOS开发-当APP涉及到用户敏感信息适配Xcode9及(ios11)
  11. .NET项目开发—浅谈面向接口编程、可测试性、单元测试、迭代重构(项目小结)...
  12. Matlab R2014b配置vlfeat0.9.20
  13. easyUI设置表格中的背景色
  14. Minecraft mod制作简易教程(三)——创建一个物品
  15. 红黑树(算法导论版)
  16. mysql数据库加密存储过程_数据库系统(六)---MySQL语句及存储过程
  17. js监听苹果手机自带按钮返回事件
  18. 【操作系统】知识梳理(八)磁盘存储器的管理
  19. matlab中使用simulink标准化输出图片
  20. 小米范工具系列之五:小米范WEB口令扫描器

热门文章

  1. 两台计算机是怎么“连接”在一起的
  2. Python|简易银行ATM程序制作
  3. 图像的配准——MATLAB实现
  4. log4j2输出中文乱码
  5. 均匀分布的期望与方差计算公式
  6. Linux命令行连接WiFi(全网最简单的方法)
  7. CSS中的表格(一)
  8. 常用的计算机中开机键是什么,按下电脑开机键,电脑内部都做了哪些事
  9. 对于按字寻址和按字节寻址的理解
  10. 请根据微信登录界面设计测试用例