WebRTC

webrtc native log 写入文件

2017-10-16  本文已影响74人  Gobert

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.";

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

上一篇下一篇

猜你喜欢

热点阅读