转自: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

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日志文件中

转载于:https://www.cnblogs.com/zhangxuan/p/6543921.html

linux 日志编程(总结)相关推荐

  1. 位于/var/log目录下的20个Linux日志文件

    位于/var/log目录下的20个Linux日志文件[译] from:http://buptguo.com/2014/01/16/linux-var-log-files/ 原文地址:20 Linux ...

  2. Linux Shell 编程学习总结

    Shell 教程 Shell简介:什么是Shell,Shell命令的两种执行方式 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成 ...

  3. 【Linux网络编程学习】预备知识(网络字节序、IP地址转换函数、sockaddr数据结构)

    此为牛客Linux C++课程和黑马Linux系统编程笔记. 1. 网络字节序 我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分. 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小 ...

  4. Linux 串口编程一 一些背景

    在大部分讲解 Linux 编程书籍的时候会发现没有单独的串口编程章节,实际上串口编程已经被概括在了"终端"或者"终端IO"章节里面.在上一篇博客中对经常出现的几 ...

  5. Linux日志收集logrotate原理介绍

    前言 在Linux环境中能够帮助我们分析问题蛛丝马迹的有效办法之一便是日志,常见的如操作系统syslog日志/var/log/messages,应用程序Nginx日志/var/log/nginx/*. ...

  6. 【华为云技术分享】Linux内核编程环境 (1)

    在上一期中,我们介绍了Linux内核的源码结构,这一期我们介绍Linux内核编程环境,首先介绍的是Linux内核的编译方法. 一.Linux内核编译方法 本期中我们以Linux 4.19.94版内核来 ...

  7. Linux多任务编程之七:Linux守护进程及其基础实验(转)

    来源:CSDN  作者:王文松  转自Linux公社 ------------------------------------------------------------------------- ...

  8. (47)LINUX应用编程和网络编程之二Linux文件属性

    Linux下的文件系统为树形结构,入口为/ 树形结构下的文件目录: 无论哪个版本的Linux系统,都有这些目录,这些目录应该是标准的.各个Linux发行版本会存在一些小小的差异,但总体来说,还是大体差 ...

  9. Linux网络编程-七

    Linux网络编程-七 web服务器项目 1 web服务器开发准备 1.1 Html语言基础(和Markdown一个性质,某些程度上和Markdown通用,所以我在编辑的时候在<>里都加了 ...

最新文章

  1. 【青少年编程】【Scratch】06 侦测模块
  2. Windows Mobile 7 梦幻之旅系列1之- What’s New?
  3. android usb集线器,通过Maven将多个部署到USB集线器上的Android设备
  4. 机器学习——深度学习(Deep Learning)经典资料
  5. oracle 触发器 和 常用内置程序包
  6. 第二届大数据科学与工程国际会议在贵阳成功召开
  7. golang生成随机定长的验证吗
  8. 面试题之wait()和sleep()方法区别
  9. 游戏音效素材大全下载 - 3000首高清无损-按分类整理
  10. NOIP2016提高组 day1
  11. office Excel操作
  12. 解决显示“此图片来自微信公众平台未经允许不可引用”错误图片
  13. ubuntu下CHM阅读器
  14. 使用include-what-you-use优化编译速度
  15. 88E1111 100BASE-T百兆工程(part2--完)
  16. 腾讯游戏深度定制 ROG游戏手机3天生高能释放
  17. GStreamer开发介绍
  18. 一分钟详解三维重建学习路线
  19. GUI自动化 - 识图定位
  20. macOS 上如何禁用 Adob​​e 后台进程,但保存 CPU、内存和网络活动呢

热门文章

  1. 机器学习、数据挖掘、计算机视觉等领域经典书籍推荐
  2. 目标检测综述——两阶段检测器
  3. 基于web的通用文本标注工具MarkTool in NLP
  4. 互联网运营数据分析(5): 流失分析
  5. linux命令 bind,Linux bind命令
  6. 遍历所有点的最短路径python_Python:如何优化所有可能的最短路径的计数?
  7. 如何成为一名优秀的前端工程师 (copy) - 段华建
  8. Apache HttpServer与Tomcat7集群Linux版
  9. Hosts 文件作用及如何修改
  10. PLMN中的USSD与IMS域中的USSD