weixin_46027762 2023-06-20 11:32 采纳率: 64.7%
浏览 195
已结题

rsyslog是怎么提取日志内容的RPI部分的代码(c语言)

rsyslog是怎么提取日志内容的PRI部分的代码(c语言),我想知道rsyslog是如何获取日志的PRI部分的内容,并想提取这一部分的代码,解析各种格式的日志内容然后转化为标准的syslog格式,比如说(oracle)日志,还有linux的一些日志,但是我发现日志上并没有PRI部分的内容,我想知道rsyslog是如何获取日志的RPI部分的内容,就比如说,我直接读取linux日志文件cron的日志内容是Jun 20 11:40:01 localhost CROND[32322]: (root) CMD (/usr/lib64/sa/sa1 1 1),但是rsyslog进行udp发送日志的时候,发送的却是<78>Jun 20 11:40:01 localhost CROND[32322]: (root) CMD (/usr/lib64/sa/sa1 1 1),<78>这个PRI是怎么获取的代码

  • 写回答

15条回答 默认 最新

  • MarkHan_ 2023-06-20 11:43
    关注

    参考一下rsyslog 的源代码

    // 接收日志消息
    void receiveLogMessage() {
        // 建立套接字并监听端口
        int socket = createSocketAndListen(port);
    
        while (1) {
            // 接收日志消息
            char* message = receiveMessage(socket);
    
            // 解析日志消息
            LogEntry logEntry = parseLogMessage(message);
    
            // 提取 RPI 部分的内容
            RPIInfo rpiInfo = extractRPIInfo(logEntry);
    
            // 处理日志消息并转发到目标
            processLogMessage(logEntry, rpiInfo);
    
            // 释放资源
            free(message);
        }
    
        // 关闭套接字
        close(socket);
    }
    
    // 解析日志消息
    LogEntry parseLogMessage(char* message) {
        // 解析日志格式,提取各个字段
        // 返回 LogEntry 结构体对象
    }
    
    // 提取 RPI 部分的内容
    RPIInfo extractRPIInfo(LogEntry logEntry) {
        // 从 logEntry 中提取 RPI 相关信息
        // 返回 RPIInfo 结构体对象
    }
    
    // 处理日志消息并转发到目标
    void processLogMessage(LogEntry logEntry, RPIInfo rpiInfo) {
        // 处理日志消息,转发到目标
    }
    
    
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月27日
  • 修改了问题 6月25日
  • 修改了问题 6月20日
  • 修改了问题 6月20日
  • 展开全部

悬赏问题

  • ¥15 安霸cv22 + rtl8211f 千兆,udp传输丢包
  • ¥15 关于区块链和边缘环境搭建的相关问题
  • ¥15 windows远程桌面断卡重连软件卡顿问题
  • ¥30 Unity 实现扫描效果
  • ¥15 HbuilderX检测不到安卓模拟器
  • ¥15 这个main已经在filename.obj中定义是什么错 C语言
  • ¥15 关于#linux#的问题:exsi8.0系统 怎么更改web访问端口,不用80、443
  • ¥15 使用elementor设计样式
  • ¥15 谁能提供一个中文版的推销咨询网站连接?
  • ¥15 springboot项目程序启动报错