文档章节

Linux syslog相关函数详解

R
 RongJinhui0
发布于 01/16 15:29
字数 772
阅读 3
收藏 1

介绍

        syslog是Unix系统的日志系统。可以将日志记录在本地系统中。

        一个完整的syslong日志包含如下信息:程序模块 | 严重性 | 时间 | 主机名 | 进程名 | 进程ID | 正文。

syslong相关函数

1. openlog()函数。调用openlog()函数时可选的。如果不调用openlog()函数,则在第一次调用syslong()函数时打开日志连接。

#include <syslog.h>

/*
 * ident: 标记,ident表示的字符串将添加在每行日志的前面,用以标记日志.
 *
 * option: 调用syslong()函数时的控制标志,标志的含义如下:
 *         LOG_CONS: 如果将日志发送给syslogd守护进程时发生错误,则将日志显示到终端。
 *         LOG_NDELAY: 立即打开与系统日志的连接。
 *         LOG_ODELAY: 类似于LOG_NDELAY,与系统日志的连接只有在调用syslog()函数时才建立。
 *         LOG_PERROR: 将信息写入日志文件的同时,将日志发送到错误输出。
 *         LOG_PID: 每条日志中都包含进程ID。
 *
 * facility: 指定记录日志程序的类型。
 *         LOG_AUTH: 认证系统(login, su, getty等)。
 *         LOG_AUTHPRIV: 同 LOG_AUTH 但只登陆到所选择的单个用户可读的文件中。
 *         LOG_CRON: cron守护进程。
 *         LOG_DAEMON: 其他系统守护进程。
 *         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 openlog(const char *ident, int option, int facility);

2. syslog()函数。syslog()函数类似于write()函数,往系统日志文件中写日志。系统日志文件的存储位置一般在/var/log/目录下。syslog()函数把日志写在/var/log/syslog文件中。

#include <syslog.h>
/*
 * priority: 表示日志级别。
 *        LOG_EMERG: 紧急情况.
 *        LOG_ALERT: 应该被立即改正的问题,如系统数据库破坏.
 *        LOG_CRIT: 重要情况,如硬盘错误.
 *        LOG_ERR: 错误.
 *        LOG_WARNING: 警告信息.
 *        LOG_NOTICE: 不是错误情况,但是可能需要处理.
 *        LOG_INFO: 情报错误.
 *        LOG_DEBUG: 包含情报的信息,通常指在调试一个程序时使用.
*/
void syslog(int priority, const char *fmt, ...);

3. closelog()函数。关闭日志设备。closelog()函数调用也是可选的,它只是关闭被用于与syslog守护进程通信的描述符。

#include <syslog.h>

void closelog(void);

syslog实例

#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <syslog.h>

#define BUFSZ 4096

static void log_msg(const char *fmt, ...)
{
    char buf[BUFSZ];
    va_list ap;
    va_start(ap, fmt);
    vsnprintf(buf, BUFSZ - 1, fmt, ap);
    strcat(buf, "\n");
    
    openlog("test", LOG_CONS | LOG_NDELAY | LOG_PERROR, LOG_USER);  // 该行可选
    syslog(LOG_INFO, "%s", buf);
    closelog();  // 该行可选
}

int main(int argc, char *argv[])
{
    log_msg("Hellow World. This is a syslog test.");
    exit(0);
}

运行该程序后,可以在/var/log/syslog文件中看到相关的打印信息。

 

© 著作权归作者所有

共有 人打赏支持
下一篇: Linux 文件I/O
R
粉丝 0
博文 6
码字总数 4960
作品 0
南京
私信 提问
在 Linux 上配置一个 syslog 服务器

syslog服务器可以用作一个网络中的日志监控中心,所有能够通过网络来发送日志的设施(包含了Linux或Windows服务器,路由器,交换机以及其他主机)都可以把日志发送给它。 通过设置一个syslo...

酱醋茶丶
2015/11/18
0
0
syslog及syslog-ng详解

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

mj4738
2013/03/12
0
0
Linux syslog日志系统详解

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

zhangguangyi
2015/08/02
0
0
Linux日志管理——syslog

1、简介 Linux下日志主要在/var/log下,比如:message、warn、localmessages等,在suse11下,由进程/sbin/syslog-ng负责日志打印 配置文件: /etc/syslog-ng/syslog-ng.conf /etc/sysconfig...

林少主
2013/03/18
0
0
Linux下syslog日志系统详解

什么是syslog 日志的主要用途是系统审计,监测追踪和分析统计. 为了保证Linux系统正常运行,准确解决遇到的各种各样的系统问题,认真地读取日志文件是管理员的一项非常重要的任务. Linux 内核由...

OscerSong
2013/01/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Objective-C中的associated object释放时机问题

如果对象A持有对象B,B作为A的associated object,并且表面上B没有其他被强引用的地方,那么对象A被释放时,对象B一定会同时释放吗?大部分情况下是,但真有不是的时候。最近实现代码的时候不...

阿里云官方博客
40分钟前
2
0
12_第一个Flutter程序

使用 package 在这一步中,你将开始使用一个名为 english_words 的开源软件包,其中包含数千个最常用的英文单词以及一些实用功能。 你可以 在 pub.dartlang.org 上找到 english_words 软件包...

口十耳
今天
7
0
【Maven冷知识】Compiler插件

很多同学在pom的配置中都喜欢加上这样一段配置信息: 从配置信息上看,这是maven对Java源代码进行的编译配置,采用了Java 7 进行编译,但是为什么要加上这段配置呢?不加有没有什么影响?很多...

算法与编程之美
今天
2
0
磊哥测评之数据库SaaS篇:腾讯云控制台、DMC和小程序

本文由云+社区发表 作者:腾讯云数据库 随着云计算和数据库技术的发展,数据库正在变得越来越强大。数据库的性能如处理速度、对高并发的支持在节节攀升,同时分布式、实时的数据分析、兼容主...

腾讯云加社区
今天
2
0
Visual Studio系列教程:使用XAML工具创建用户界面(二)

Visual Studio是一款完备的工具和服务,可帮助您为Microsoft平台和其他平台创建各种各样的应用程序。在本系列教程中将介绍如何为图像编辑创建基本的用户界面,有任何建议或提示请在下方评论区...

ymy_666666
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部