linux 日志编程(总结)
转自:http://blog.csdn.net/hemmanhui/article/details/4343844
日志主要涉及3个函数,分别是openlog、syslog和closelog函数。表8.4所示为这3个函数的具体信息。
openlog、syslog和closelog函数
|
头文件 |
<syslog.h> |
||
|
函数形式 |
void openlog(const char *ident, int option, int facility); void syslog(int priority, const char *format, ...); void closelog(void); |
||
|
返回值 |
成功 |
失败 |
是否设置errno |
|
− |
− |
− |
|
说明:openlog函数用于打开系统日志连接。只有在打开连接后,才能使用syslog函数向日志文件中添加日志信息。closelog函数用于关闭打开的系统日志连接,该函数的调用在实现中是可选择的。
openlog函数中的第1个参数为ident,该参数常用来表示信息的来源。ident指向的字符信息会被固定地添加在每行日志的前面。第2个参数option用于指定openlog函数和接下来调用的syslog函数的控制标志。option的取值情况如表8.5所示,可以单独取其中的某个值,也可以通过与运算来获得多种特性。第3个参数为facility,这个要与syslogd守护进程的配置文件对应,日志信息会写入syslog.conf文件指定的位置。
openlong函数中的option取值表
|
参 数 |
说 明 |
|
LOG_CONS |
如果将信息发送给syslogd守护进程时发生错误,直接将相关信息输出到终端 |
|
LOG_NDELAY |
立即打开与系统日志的连接(通常情况下,只有在产生第一条日志信息的情况下才会打开与日志系统的连接) |
|
LOG_NOWAIT |
在记录日志信息时,不等待可能的子进程的创建 |
|
LOG_ODELAY |
类似于LOG_NDELAY参数,与系统日志的连接只有在syslog函数调用时才会创建 |
|
参 数 |
说 明 |
|
LOG_PERROR |
在将信息写入日志的同时,将信息发送到标准错误输出(POSIX.1-2001不支持该参数) |
|
LOG_PID |
每条日志信息中都包括进程号 |
openlog函数参数facility取值
|
facility参数 |
syslog.conf中对应的facility取值 |
|
LOG_KERN |
kern |
|
LOG_USER |
user |
|
LOG_MAIL |
|
|
LOG_DAEMON |
daemon |
|
LOG_AUTH |
auth |
|
LOG_SYSLOG |
syslog |
|
LOG_LPR |
lpr |
|
LOG_NEWS |
news |
|
LOG_UUCP |
uucp |
|
LOG_CRON |
cron |
|
LOG_AUTHPRIV |
authpriv |
|
LOG_FTP |
ftp |
|
LOG_LOCAL0~LOG_LOCAL7 |
local0~local7 |
syslog函数中的第一个参数priority表示消息的级别。与openlog函数中的facility参数类似,priority参数与level也存在对应的关系。
syslog函数参数priority取值
|
priority参数 |
syslog.conf中对应的level取值 |
|
LOG_EMERG |
emerg |
|
LOG_ALERT |
alert |
|
LOG_CRIT |
crit |
|
LOG_ERR |
err |
|
LOG_WARNING |
warning |
|
LOG_NOTICE |
notice |
|
LOG_INFO |
info |
|
LOG_DEBUG |
debug |
syslog函数的第二个参数为消息的格式,之后是格式对应的参数。函数的使用类似于printf函数。
#include <stdio.h>
#include <syslog.h>
int main(int argc,char* argv[])
{
openlog("HEMM",LOG_CONS | LOG_PID, LOG_USER);
int count=0;
while(count<5){
syslog(LOG_INFO,"%d, log info test...",count);
count++;
}
closelog();
return 0;
}
调用syslog函数时,指定的priority为LOG_INFO,对应于syslog.conf中的info优先级。而调用openlog函数的facility为LOG_USER,对应于syslog.conf中facility取user的情况。查找syslog.conf中的facility.level为user.info的规则,如图8.7所示。可知,日志文件为/var/log/message。
由于查看/var/log下的日志需要root权限,使用su切换到root用户。使用tail命令查看message文件中的日志信息,发现相关信息已经通过syslogd守护进程记录在了/var/log/message日志文件中
linux 日志编程(总结)的更多相关文章
- Linux内核模块编程——Hello World模块
Linux内核模块编程 编程环境 Ubuntu 16.04 LTS 什么是模块 内核模块的全称是动态可加载内核模块(Loadable Kernel Modul,KLM),可以动态载入内核,让它成为内核 ...
- Linux系统编程【转】
转自:https://blog.csdn.net/majiakun1/article/details/8558308 一.Linux系统编程概论 1.1 系统编程基石 syscall: libc:标准 ...
- 位于/var/log目录下的20个Linux日志文件
位于/var/log目录下的20个Linux日志文件[译] from:http://buptguo.com/2014/01/16/linux-var-log-files/ 原文地址:20 Linux ...
- Linux Shell编程与编辑器使用详解
<Linux Shell编程与编辑器使用详解> 基本信息 作者: 刘丽霞 杨宇 出版社:电子工业出版社 ISBN:9787121207174 上架时间:2013-7-22 出版日期:201 ...
- (47)LINUX应用编程和网络编程之二Linux文件属性
Linux下的文件系统为树形结构,入口为/ 树形结构下的文件目录: 无论哪个版本的Linux系统,都有这些目录,这些目录应该是标准的.各个Linux发行版本会存在一些小小的差异,但总体来说,还是大体差 ...
- Linux多任务编程之七:Linux守护进程及其基础实验(转)
来源:CSDN 作者:王文松 转自Linux公社 ------------------------------------------------------------------------- ...
- Linux/UNIX编程如何保证文件落盘
本文转载自Linux/UNIX编程如何保证文件落盘 导语 我们编写程序write数据到文件中时,其实数据不会立马写入磁盘,而是会经过层层缓存.每层缓存都有自己的刷新时机,每层缓存都刷新后才会写入磁盘. ...
- 【深入浅出Linux网络编程】 "开篇 -- 知其然,知其所以然"
[深入浅出Linux网络编程]是一个连载博客,内容源于本人的工作经验,旨在给读者提供靠谱高效的学习途径,不必在零散的互联网资源中浪费精力,快速的掌握Linux网络编程. 连载包含4篇,会陆续编写发出, ...
- 【linux草鞋应用编程系列】_5_ Linux网络编程
一.网络通信简介 第一部分内容,暂时没法描述,内容实在太多,待后续专门的系列文章. 二.linux网络通信 在linux中继承了Unix下“一切皆文件”的思想, 在linux中要实现网 ...
随机推荐
- 04: Dom
目录: 参考W3school 1.1 获取标签:直接选择器和间接选择器 1.2 操作标签 1.3 DOM其他操作 1.4 DOM绑定事件的三种方法 1.5 DOM可以绑定的事件 1.1 获取标签:直接 ...
- Android实践项目汇报(一)
# 我要做的是Google天气客户端 一.Need(需求): 1. 功能性需求分析 天气预报客户端,顾名思义就是为用户提供实时准确的天气信息,方便用户出行生活.根据用户日常需求,软件实现后所达到的功能 ...
- FSMC(STM32)
(一)FSMC:Flexible Static Memory Controller,可变(灵活)静态存储控制器 小容量产品是指闪存存储器容量在1 6K至32K 字节之间的STM32F101xx.STM ...
- Django组件(二) Django之Form
Forms组件概述 forms组件 -Django提供的用语数据校验和模板渲染的组件 -在项目中创建一个py文件 -1 写一个类继承Form -2 在类中写属性,写的属性,就是要校验的字段 -3 使用 ...
- 基于bootstrap的后台管理系统
ace metro'nic 基于bootstrap的后台admin system ace [eis], 扑克牌中的A 表示 非常棒, 杰出, 顶好的... gallery: 画廊, 走廊; 在网页中常 ...
- JavaScript new return 类的实例化
new初始化方法 简单没有return的就不写了 function Person() { this.name="hongda"; ; return "fffffff&qu ...
- POJ1061 青蛙的约会(扩展欧几里得)题解
Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事 ...
- 安装 mysql5.7.2 (Ubuntu 16.04 desktop amd64)
1.下载mysql deb https://dev.mysql.com/downloads/mysql/ #移动到/usr/local/src/目录,解压 sudo mv mysql-server_5 ...
- servlet生命周期深入理解
什么是Servlet Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中 ...
- queue_01
A.添加/移除 void queue::push(elemValue); // 尾部添加 viud queue::pop(); // 尾部移除 B.随机存取 C.数据存取 T queue::back ...