Linux和Windows下使用Syslog库

2023-11-16

本文档描述如何在Windows和Linux下使用Syslog库,在Linux下GNU库中已经自带有syslog库,但是在Windows下的标准库中没有syslog库,从网上可以找到syslog的开源代码实现,接口函数基本上与Linux一致,并且提供一个扩展函数来设置读取syslog服务器的IP地址和端口。下面将详细说明如何使用Syslog库。

Linux下使用

Syslog库有一组系统日志写入接口,分别为openlog/syslog/closelog/vsyslog,其中vsyslog和syslog功能是一样的,只是参数不同而已。

通常,syslog守护进程读取三种格式的记录消息。此守护进程在启动时读取一个配置文件。一般来说,配置文件的名称为/etc/syslog.conf,这文件决定不同类型的消息由该送往何处。例如:紧急的消息可以送给系统管理员,并且在控制台上显示,而告警消息则可以记录到文件中。该机制提供了syslog函数,其调用格式如下:

#include <syslog.h>

void openlog (char*ident,int option ,intfacility);

void syslog(int priority,char*format,……)

void closelog();

调用openlog()是可选的,如果不调用openlog(),则在第一次调用syslog()时,自动会调用openlog()函数,调用closelog函数也是可选的,它只是关闭被用于与syslog守护进程通信的描述符。调用openlog时可以指定一个ident标识符,这个indet将会添加到每个消息中,它一般为程序的名称。

示例程序如下:

#include <syslog.h>

int main(int argc, char**argv)

{

openlog(“indent”,LOG_CONS | LOG_PID, 0);

syslog(LOG_DEBUG,“This is a syslog message generated by program %s\n”, argv[0]);

closelog();

return0;

}

编译和运行程序后,在/var/log/message文件的最后一行可以看到添加的消息如下:

Feb 12 08:48:38 localhost indent[7085]:This is a syslog message generated by program ./a.out

上面三个函数的详细参数说明可以使用man命令查看。

如果程序需要使用系统日志功能,只需要在程序启动时使用openlog函数来连接syslogd程序,然后使用syslog函数给守护进程发送syslog消息。

Windows下使用

介绍

Syslog-win32开源库时一个在Windows下使用的syslog实现,它包括服务器和客户端程序,特征如下:

1) 兼容RFC-3164 syslog协议;

2) 高性能;

3) 消息传递;

4) 日志循环;

5) 完全开源。

下载网址:http://syslog-win32.sourceforge.net,版本1.0。

Syslog-win32可以帮助开发人员编写可移植的软件。下面一些情况可以使用:

1) 移植已有的UNIX软件到原生的Windows平台;

2) 编写可移植软件;

3) 编写纯Windows软件,但是知道EventLog的问题而寻找替代品。

希望该库能够为你提供帮助。

当然,你也可以使用监控程序作为网络消息收集器。但是我认为UNIX是一个更好的选择。不是因为这个库不够好(希望是这样的),而是因为UNIX上具有更好的依赖性。

Syslog-win32的源代码没有权限要求,可以任意的使用、修改和发行它。

Syslog客户端

客户端的配置文件是可选的,它的文件名称为syslog.host,它应该包含主机名或者是IPV4的地址,后面可以选择跟着“:”冒号和端口号。缺省的端口为514,如果在当前路径下不存在这个文件,那么会使用localhost和缺省端口。

这可能看上去有点奇怪(丑陋),除非你有更好的注意。值得注意的是:与Daemon程序不同的是客户端应该没有任何依赖性。

Syslog服务器端

概念相当的简单:这里有一些消息源、消息过滤器和目标服务器。每一项都是唯一的名字,logpath与源、过滤器和目标服务器联系在一起。 每一项都会在logpath中指定,但是logpath可以引用相同的源、过滤器和目标服务器。服务器端的配置文件使用XML格式,它不是与UNIX syslog的配置文件不一致。

使用方法

从syslog-win32网站上下载源代码压缩包(syslog-win32-0.3.tar.bz2)。解压缩后,把客户端所使用的两个文件添加到使用syslog的项目中,如下:

1) 在include目录下的syslog.h头文件;

2) 在client目录下的syslog-client.c实现文件;

在VS 2008中会报错:snprintf没有定义,使用_snprintf替代即可。

Syslog库的使用接口和方法与Linux一样,唯一的区别是有一个Windows下专用的函数:

extern const char* set_syslog_conf_dir( constchar* dir );

它可以设置syslog.host读取时的目录,syslog.host中只包含syslog服务器使用的主机名和端口,使用冒号分割,例如:192.168.8.11:514。syslog的缺省端口为514。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux和Windows下使用Syslog库 的相关文章

  • Win11微软账号登录不上?Win11登录Microsoft账户出错的解决方法

    Win11微软账号登录不上 近期有部分Win11用户反映在登录微软账号会出现一直转圈 无法登录的情况 这样导致部分功能都不能正常使用了 为此十分令人头疼 那么对于这一情况 有没有什么方法可以有效的解决呢 下面小编教给大家操作方法 大家可以去
  • 操作系统学习(九)进程通信

    一 知识总览 二 定义 进程通信是指进程之间的信息交换 每个进程都拥有自己的内存空间 是相互独立的 这样在每个进程执行时 才不会被其他进程所干扰 三 进程通信的方式 1 共享存储 1 两个进程对共享区的访问必须是互斥的 即在同一时间内 只允
  • 虚拟内存的最大容量与实际容量区别

    虚拟内存的最大容量与实际容量区别 1 概念介绍 虚拟内存的最大容量是计算机的地址结构 CPU寻址范围决定的 虚拟内存的实际容量是内存与外存之和 CPU寻址范围 两者的最小值 2 例题介绍 某计算机的地址结构是64位 按字节编址 内存大小51
  • Client-Server问题

    1 实验内容与要求 需要创建客户Client和服务器Server两个进程 它们通过管道进行通信 Client进程派生3个生产者线程 一个管道线程 共享一个20个slots的缓冲区 每个生产者线程随机产生一个数据 打印出来自己的id 进程 线
  • JSON.stringify()

    JSON stringify 将一个JavaScript值 对象或者数组 转换为一个 JSON字符串 如果指定了replacer是一个函数 则可以选择性的替换值 或者如果指定了replacer是一个数组 可选择性的仅包含数组指定的属性 语法
  • Linux使用nvida-smi查看GPU类型

    nvida smi提供一个查看GPU信息的方法 然而这种方式不能查看GPU型号 型号被省略成了GeForce RTX 208 如果我们需要查看GPU的型号 只需要运行nvidia smi L即可 mrfive ubuntu nvidia s
  • Java堆的自动垂直缩放

    多年以来 java一直是贪婪的应用程序的同义词 这种类型的应用程序在晚上打开冰箱并吞噬所有可用资源 直到崩溃 该行为的主要原因是缺乏一种有效的方式来将操作系统在Java堆中分配且不再使用的内存交还给操作系统 However with the
  • nslookup命令详解

    nslookup命令用于查询DNS的记录 查看域名解析是否正常 在网络故障的时候用来诊断网络问题 nslookup的用法相对来说还是蛮简单的 主要是下面的几个用法 1 直接查询 这个可能大家用到最多 查询一个域名的A记录 nslookup
  • LWIP在STM32上的移植

    本文做记录摘抄 加上自己的体会 文章标题 STM32使用LWIP实现DHCP客户端 http www cnblogs com dengxiaojun p 4379545 html 该文章介绍了几点 LWIP源码的内容 关键点 1 inclu
  • 深入ftrace kprobe原理解析

    Linux krpobe调试技术是内核开发者专门为了编译跟踪内核函数执行状态所涉及的一种轻量级内核调试技术 利用kprobe技术 内核开发人员可以在内核的绝大多数指定函数中动态插入探测点来收集所需的调试状态信息而基本不影响内核原有的执行流程
  • Visual studio 2005 hangs on startup AppHangXProcB1 svchost devenv.exe svchost.exe:{2a811bb2-303b-48b...

    This problem has been torturing me for the whole afternoon and after searching on the web for a long time I finally get
  • Windows运行常用命令(win+R)

    1 calc 启动计算器 2 notepad 打开记事本 3 write 写字板 4 mspaint 画图板 5 snippingtool 截图工具 支持无规则截图 6 mplayer2 简易widnows media player 7 S
  • Linux常用命令记录

    文章目录 1 软件安装 安装软件 来自源服务器 安装 deb软件 来自本地 deb文件 修复依赖关系 卸载软件 2 文件 文件夹操作 删除文件夹 移动文件 文件重命名 3 程序查看 处理 进程查看 查看端口占用情况 强制终止程序 4 解压文
  • Ubuntu9.04太多乱码(中文不能正常显示)

    最近在使用Ubuntu9 04的过程中 发现有好多地方都出现乱码 其实是中文不能正常显示 现在把我所遇到的所有乱码问题集中一下 方便以后查阅参考 一 Flash乱码 在终端输入 sudo gedit etc fonts conf d 49
  • 《深入理解计算机系统》实验四Architecture Lab

    前言 深入理解计算机系统 实验四Architecture Lab下载和官方文档机翻请看 深入理解计算机系统 实验四Architecture Lab下载和官方文档机翻 我觉得这个文档对整个实验很有帮助 如果你的Y86 64环境还没安装好可以看
  • 操作系统常见面试题

    1 什么是进程 Process 和线程 Thread 有何区别 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动 进程是系统进行资源分配和调度的一个独立单位 线程是进程的一个实体 是CPU调度和分派的基本单位 它是比进程更小的能
  • 如何快速构建CMBD系统-glpi

    脚本后续更新及迭代将由kkitDeploy项目代替 https github com luckman666 kkitdeploy server 请大家持续关注kkitDeploy 一 CMBD系统构建步骤 起初 开发这套CMBD系统是为了帮
  • MacOS中清除原有ssh公钥方法

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 用ssh的跳转登录服务器后 ssh会把你每个你访问过计算机的公钥 public key 都记录在 ssh known hosts 当下次访问相同计算机时 SSH会核对公钥
  • I/O设备模型

    I O设备模型 绝大部分的嵌入式系统都包括一些I O Input Outut 输入 输出 设备 例如仪器上的数据显示屏 工业设备上的串口通信 数据采集设备上用于保存数据的Flash或SD卡 以及网络设备的以太网接口等 I O设备模型框架 R
  • 【操作系统xv6】学习记录4-一级页表与二级页表

    占位

随机推荐

  • 干货|Pytorch弹性训练极简实现( 附源码)

    点击上方 视学算法 选择加 星标 或 置顶 重磅干货 第一时间送达 作者丨颜挺帅 知乎 已授权 来源丨https zhuanlan zhihu com p 489892744 编辑丨极市平台 导读 作者将以往抽象的分布式训练的概念以代码的形
  • C++11的时间新特性之high_resolution_clock

    转自 https blog csdn net cw hello1 article details 66476290 我在这里只是说一说high resolution clock的时间用法 这里有一个C 的网上的API地址 包含了C 11的新
  • 设计模式之迭代器模式

    迭代器 Iterator 模式的定义 提供一个对象来顺序访问聚合对象中的一系列数据 而不暴露聚合对象的内部表示 迭代器模式是一种对象行为型模式 其主要优点如下 访问一个聚合对象的内容而无须暴露它的内部表示 遍历任务交由迭代器完成 这简化了聚
  • 程序员python表白代码

    python表白代码 源代码如下 coding utf 8 import turtle import time 画爱心的顶部 def LittleHeart for i in range 200 turtle right 1 turtle
  • 3-jeecg-boot前端组件——字段与列表混排的表单处理

    引言 jeecg可以通过formSchema FormSchema 的方式快速定义表单字段 export const formSchema FormSchema label 父级节点 field pid component JTreeSel
  • ESP32-C3 应用程序的启动流程

    网上说明一大堆 基本是官网文档复制没有额外解释 对于ESP32 C3的 risc v 内核 是我选择他的原因之一 了解芯片上电后的启动流程 有利于我们更加深入理解芯片 目录 前言 一 应用程序启动阶段 1 1 app main c 1 2
  • [1215]小米手机USB安装出现当前设备已被临时限制

    小米系列手机 开发者版本 之 USB安装出现当前设备已被临时限制 USB安装出现当前设备已被临时限制 3 2 解决方案 1 更换SIM卡 更换小米账号 2 重新启动手机 即可解决 实战分析 SIM卡数据异常 触发限制代码 3 2 USB安装
  • Uncaught Error: useNavigate() may be used only in the context of a <Router> component.

    出现此问题的原因是因为使用useNavigate的模块没有被react的路由所包围 导致路由并不能在这个层面上使用 解决办法有两种 一 将这个模块被路由模块包围 export default memo gt return
  • React-Router实战:NavLink

    基础 1 引入使用 import NavLink from react router dom
  • rs232接口_串口,COM口,TTL,RS232,RS485,UART的区别详解

    在电路设计或者实际应用过程中 我们往往会遇到下面几种接口 在下面文章中我们详细介绍串口 COM口 RRL RS232 UART几种接口之间的区别与联系以及常见的连接使用方式 串口 串口 即串行接口 与之相对应的另一种接口叫并口 并行接口 两
  • 树莓派做无线网络服务器,树莓派做无线热点

    虽然之前我们使用树莓派成功刷入 OpenWrt 来做路由器使用 不过娱乐性却显得比较单一 无法方便地安装其他各种软件 从源码编译也会更加麻烦 经常是缺少各种头文件 因此 今天我们决定使用官方的 Raspbian 系统来设置树莓派作为一个无线
  • 学习编程过程中-->遇到的错误

    文章目录 学习编程过程中 gt 遇到的错误 吕招焕 1 java sql SQLException Parameter index out of range 2 gt number of parameters which is 1 详情如下
  • 使用 Blazor 开发内部后台(二):了解 Blazor 组件

    James 转载技术社区中一位朋友最新的文章 介绍自己为公司的 WebForm 遗留系统使用 Blazor 重写前端 UI 的经历 什么是Blazor组件 Blazor 应用是使用 Razor 组件构建的 组件是用户界面 UI 的自包含部分
  • 题目 1548: [蓝桥杯][算法提高VIP]盾神与砝码称重

    时间限制 1Sec 内存限制 128MB 提交 782 解决 331 题目描述 有一天 他在宿舍里无意中发现了一个天平 这 个天平很奇怪 有n个完好的砝码 但是没有游码 盾神为他的发现兴奋不已 于是他准备去称一称自己的东西 他准备好了m种物
  • 矩阵树定理

    启蒙 http zhengruioi com contest 1416 T1 T2的10分暴力 后面是论文科技 不搞了 https www luogu com cn problem P6178 O n 3
  • 你不知道的javascript之函数作用域和块作用域(一)

    立即执行函数表达式 IIFE 1 使用匿名函数表达式 var a 2 function IIFE var a 3 console log a 3 console log a 2 2 当作函数调用并传递参数进去 var a 2 functio
  • 机器学习总结

    目录 一 连续特征的离散化 在什么情况下将连续的特征离散化之后可以获得更好的效果 二 LabelEncoder和OneHotEncoder 在特征工程中的应用 三 神经网络 深度学习 四 反向传播与梯度下降 五 聚类算法 六 机器学习 样本
  • python+Opencv数字图像处理入门到精通

    1 环境配置 在python 3 4 2 之后 一些算法被申请了专利 可能不能在使用 因此 建议使用的版本为 3 4 1 15或3 4 0 15 在Anaconda下安装opencv需要执行如下两个指令 pip install opencv
  • "免费!中文!10个最佳Python学习网站推荐

    分享资料 一起学习 我是小白 微信 tlxx233 备注 888建了个微信程序员学习群 互相解答问题 有需要的同学可以加我微信进群 10个免费学习 Python 的中文网站 如果你想要学习 Python 那么这篇文章将会介绍 10 个免费的
  • Linux和Windows下使用Syslog库

    本文档描述如何在Windows和Linux下使用Syslog库 在Linux下GNU库中已经自带有syslog库 但是在Windows下的标准库中没有syslog库 从网上可以找到syslog的开源代码实现 接口函数基本上与Linux一致