linux - syslog详解
简介
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详解相关推荐
- linux syslog详解-------未测试
原文:http://www.cnblogs.com/skyofbitbit/p/3674664.html linux syslog详解 分三部分 一.syslog协议介绍 二.syslog函数 三.l ...
- linux内核日志使用syslog,Linux日志系统syslog详解
一台服务器的日志对系统工程师来说是至关重要的,一旦服务器出现故障或被入侵,我们需要查看日志来定位问题的关键所在,所以说对于线上跑的服务器而言日志应该合理的处理及管理.下面来介绍下linux系统的sys ...
- linux系统服务详解 用于Linux系统服务优化
linux系统服务详解 用于Linux系统服务优化 服务名 必需(是/否)用途描述 注解 acon 否 语言支持 特别支 ...
- Linux 目录详解 树状目录结构图
1.树状目录结构图 2./目录 目录 描述 / 第一层次结构的根.整个文件系统层次结构的根目录. /bin/ 需要在单用户模式可用的必要命令(可执行文件):面向所有用户,例如:cat.ls.cp,和/ ...
- Linux系统服务详解
Linux系统服务详解 服务,其实就是运行在操作系统后台的一个或者多个应用程序,为计算机系统或用户提供某项特定的服务.服务通常是不中断运行的,随时准备接受请求,从而提供某项服务.下面详细介绍下linu ...
- 《Linux命令详解手册》——Linux畅销书作家又一力作
关注IT,更要关心IT人,让系统管理员以及程序员工作得更加轻松和快乐.鉴于此, 图灵公司引进了国外知名出版社John Wiley and Sons出版的Fedora Linux Toolbox: 10 ...
- Linux系统详解 系统的启动、登录、注销与开关机
Linux系统详解 第六篇:系统的启动.登录.注销与开关机 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://johncai.blo ...
- 每天一个linux命令(25):linux文件属性详解
每天一个linux命令(25):linux文件属性详解 Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或修改的时间等内容.具体情况如下 ...
- c linux time微秒_学习linux,看这篇1.5w多字的linux命令详解(6小时讲明白Linux)
用心分享,共同成长 没有什么比每天进步一点点更重要了 本篇文章主要讲解了一些linux常用命令,主要讲解模式是,命令介绍.命令参数格式.命令参数.命令常用参数示例.由于linux命令较多,我还特意选了 ...
最新文章
- 数据结构——算法之(010)( 字符串的左旋转操作)
- python之⾯向对象-多态
- 《用Python进行自然语言处理》第 5 章 分类和标注词汇
- 分享经济:我的,就是你的
- MySQL查询出2门及2门以上不及格者的平均成绩
- VTK:InfoVis之WordCloudDemo
- java算法编程题_【java题目】考验你编程能力和算法的时候到了
- css中分区显示php,CSS中7个你必须知道属性
- this 自引用指针
- iOS开发-当APP涉及到用户敏感信息适配Xcode9及(ios11)
- .NET项目开发—浅谈面向接口编程、可测试性、单元测试、迭代重构(项目小结)...
- Matlab R2014b配置vlfeat0.9.20
- easyUI设置表格中的背景色
- Minecraft mod制作简易教程(三)——创建一个物品
- 红黑树(算法导论版)
- mysql数据库加密存储过程_数据库系统(六)---MySQL语句及存储过程
- js监听苹果手机自带按钮返回事件
- 【操作系统】知识梳理(八)磁盘存储器的管理
- matlab中使用simulink标准化输出图片
- 小米范工具系列之五:小米范WEB口令扫描器