NET-SNMP开发——日志输出
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
来输出参数s
和error
字符串。 调用示例
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");
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理