美文网首页WebRTC
webrtc native log 写入文件

webrtc native log 写入文件

作者: Gobert | 来源:发表于2017-10-16 00:08 被阅读74次

    WebRTC Native 代码的 log 默认是不会输出到控制台和文件中,但是 webrtc 提供了相应的接口,以方便我们将日志输出到控制台或者磁盘文件中,日志做为一个通用的基础功能,它的实现被放在了 rtc_base 下的 logging 文件中 ,首先需引用其头文件:

    #include "webrtc/rtc_base/logging.h"
    

    如果想要将日志同时输出到 Visual Studio IDE 的输出窗口中的话,只需要在程序入口处调用如下方法既可:

    rtc::LogMessage::LogToDebug(rtc::INFO); //日志等级可自由配置
    

    如果要将将 native log 输出到控制台以及文件中的话,步骤如下:

    1、实现接收日志流的接口

    首先需实现用于接收日志数据的接口 LogSink,并在其日志回调接口

    virtual void OnLogMessage(const std::string& message) == 0;
    

    中,将日志数据写入本地文件既可,最简单的实现类如下:

    class MyLogStream : public rtc::LogSink {
    public:
        MyLogStream() {
            if (0 != fopen_s(&_fp, "webrtc-native.log", "wt")) {
                return;
            }
    
        }
        virtual ~MyLogStream() {
            if (_fp) {
                fclose(_fp);
                _fp = NULL;
            }
        }
        //日志格式可在此接口中定义
        virtual void OnLogMessage(const std::string& message) {
            if (!_fp) {
                return;
            }
            fwrite(message.c_str(), 1, message.length(), _fp);
            //fflush(_fp);
        }
    
    private:
        FILE* _fp = NULL;
    };
    

    2、配置日志等级

    实现此接口后,申请一个该子类的新实例,并保证其全局的生存期,并为其添加需要记录的日志等级,如:

        MyLogStream* _myLogStream = new MyLogStream;
        
        //添加需要记录的日志最高等级,小于此值的均将被记录到日志中:
        rtc::LogMessage::AddLogToStream(_myLogStream, rtc::INFO);    
    

    日志等级设置了 INFO,那么所有大于 INFO 的 log 都将写入文件;

    3、写日志

    通过以下接口记录日志:

    LOG(INFO)
    << "WebRTC info log test.";
    LOG(WARNING)
    << "WebRTC warning log test.";
    LOG(LERROR)
    << "WebRTC error log test.";
    

    以上三条日志便记录在日志文件中。

    相关文章

      网友评论

        本文标题:webrtc native log 写入文件

        本文链接:https://www.haomeiwen.com/subject/mjmhuxtx.html