NET-SNMP开发——日志输出

net-snmp的日志输出功能是很强大的,与日志输出相关函数声明在net-snmp-5.7.3\include\net-snmp\library\snmp_logging.h文件中,定义在net-snmp-5.7.3\snmplib\snmp_logging.c文件中。

具体实现就不说了,可以自己看源码。

net-snmp的日志功能默认将日志写入到/var/log/snmpd.log文件中(linux/unix下,windows下没有)

snmp log 类型

net-snmp中将日志分为8个类型(一个警告warning,三个信息information,四个错误error),具体的宏定义如下

/* error types */
#define LOG_EMERG 0 /* system is unusable */
#define LOG_ALERT 1 /* action must be taken immediately */
#define LOG_CRIT 2 /* critical conditions 临界条件*/
#define LOG_ERR 3 /* error conditions 错误条件*/
/* warning type */
#define LOG_WARNING 4 /* warning conditions 预警条件*/
/* information types */
#define LOG_NOTICE 5 /* normal but significant condition 正常但意义重大*/
#define LOG_INFO 6 /* informational 信息*/
#define LOG_DEBUG 7 /* debug-level messages 调试级别的消息*/

注意:这些严重等级的分类是与标准的 UNIX/LINUX 中的 syslog 一致的。

System is unusable emergencies alerts 极其紧急的错误 Action must be taken immediately 需立即纠正的错误 Critical conditions 关键信息 Error conditions 需关注但不关键的错误 Warning conditions警告,可能存在某种差错 Normal but significant condition 需注意的信息 Informational 一般提示信息 Debug-level messages调试信息

日志输出函数

snmp_log

int snmp_log(int priority, const char *format, ...)

这个函数实际上调用的是snmp_vlog函数,这个函数成功返回0,当不能格式化日志字符串时返回1,当动态内存不能分配返回2,如果日志缓冲区的长度大于1024字节。这些消息将以LOG_ERR类型直接写入日志文件。

调用示例

snmp_log(LOG_ERR, "%s: Error %d out-of-range\n", s, errno);

snmp_log_perror

void snmp_log_perror(const char *s)

实际上是先调用char* error = strerror(errno);获取errno的信息,然后使用snmp_log来输出参数serror字符串。 调用示例

snmp_log_perror("init error");

snmp_log_string

void snmp_log_string(int priority, const char *str)

调用示例

snmp_log_string(LOG_ERR, "Could not format log-string\n");

NET-SNMP开发——日志输出的更多相关文章

  1. odoo开发笔记 -- 后台日志输出及分析

    odoo开发笔记 -- 后台日志输出及分析 附:日志分析软件

  2. [iOS开发系列]根据Debug和Release状态的变化来屏蔽日志输出

    今天在这里分享一个很实用的小技巧. 我们平时在开发应用的时候,经常会用到NSLog来调试我们的程序,而随着项目越来越大,这些用于调试的日志输出就会变得很难管理. 我们在发布正式版的时候一定要屏蔽掉所有 ...

  3. iOS开发进阶 - 日志输出框架CocoaLumberjack与XcodeColors插件的简单使用(swift版)

    CocoaLumberjack是Mac和iOS上一个集快捷.简单.强大和灵活于一身的日志框架.XcodeColors是用于控制台着色的工具,配合着CocoaLumberjack用有更好的效果,不废话, ...

  4. Java学习-046-日志抓取合并后排序问题解决方案之 --- log4j 二次定制,实现日志输出添加延时10ms

    自3月25至今,已经好久没有写学习日志了,今天在写日志抓取合并的小方法,发现抓取后的日志并米有依据系统执行的日志顺序排序.日志抓取排列逻辑如下: 通过日志标识,从各个日志文件(例如 use.log,e ...

  5. log4j日志输出使用教程

    Log4j是帮助开发人员进行日志输出管理的API类库.它最重要的特点就可以配置文件灵活的设置日志信息的优先级.日志信息的输出目的地以及日志信息的输出格式.Log4j除了可以记录程序运行日志信息外还有一 ...

  6. 【Android】pidcat 不显示日志输出

    问题: 直接安装了 pidcat :  brew install pidcat ,装完以后执行 pidcat <package name> ,发现没有日志输出,adb devices 也能 ...

  7. springboot 学习之路 4(日志输出)

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

  8. ELK实战(Springboot日志输出查找)

    需求 把分布式系统,集群日志集中处理快速查询 搭建ELK并与springboot日志输出结合 搭建ELK 基于我前面的elasticsearch搭建博客文档docker-compose.yml基础上进 ...

  9. Redis 自定义 RedisAppender 插件, 实现日志缓冲队列,集中日志输出.

    因为某些异步日志设置了即使队列满了,也不可丢弃,在并发高的时候,导致请求方法同步执行,响应变慢. 编写这个玩意,除了集中日志输出以外,还希望在高并发的时间点有缓冲作用. 之前用Kafka实现了一次入队 ...

随机推荐

  1. 9月6日表格标签(table、行、列、表头)(补)

    一.<table> <table>代表表格标签.   <table></table> 1.width  表示表格宽度,宽度表达方式有像素和百分比两种.网 ...

  2. linux 开机启动过程详解

    Linux开机执行内核后会启动init进程,该进程根据runlevel(如x)执行/etc/rcx.d/下的程序,其下的程序是符号链接,真正的程序放在/etc/init.d/下.开机启动的程序(服务等 ...

  3. os模块之popen

    想查看当前目录下有哪些东西,可以使用os.popen()方法,代码如下: t = (os.popen("dir")) print(t.read()) #运行结果 C:\python ...

  4. cmake 静态调用 c++ dll 的类的一个例子(Clion IDE)[更新1:增加1.模版的应用,2.ma 的算法]

    CMakeLists.txt project(aaa) add_library(aaa SHARED aaa.cpp) add_executable(bbb bbb.cpp) target_link_ ...

  5. Behavior Trees

    https://en.wikipedia.org/wiki/Behavior_Trees_(artificial_intelligence,_robotics_and_control) http:// ...

  6. JQuery中serialize()、serializeArray()和param()方法示例介绍

    在项目中做form表单提交的时候,如果参数比较少,可以通过jquery一个个取得,但是当 form表参数很多的情况下,还是一一取得的话无疑是加大了工作量,那我们需要咱们获取到表单的所有参数呢,幸好,j ...

  7. AWK改变输入输出分隔符实例分析

    awk默认从STDIN接受数据,打印文本到STDOUT. awk的默认输入和输出分隔符: FS : 输入字段分隔符,默认空格. RS : 输入行分隔符,默认\n. OFS : 输出字段分隔符,默认空格 ...

  8. MFS文件系统

    一.MFS文件系统概论 MFS是linux下的开源存储系统,是由波兰人开发的.MFS文件系统能够实现RAID的功能,不但能够节约存储成本,而且不逊于专业的存储系统,能够实现在线扩展.MFS是一种半分布 ...

  9. Orchard源码分析(4):Orchard.Environment.OrchardStarter类

    概述 OrchardStarter类是个静态类,主要作用是配置Autofac容器以及创建IOrchardHost(DefaultOrchardHost)对象,分别对应CreateHost和Create ...

  10. Python程序的常见错误(收集篇)

    关于Python Python是一门解释性的,面向对象的,并具有动态语义的高级编程语言.它高级的内置数据结构,结合其动态类型和动态绑定的特性,使得它在快速应用程序开发(Rapid Applicatio ...