微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

log4cplus 不显示所有消息

如何解决log4cplus 不显示所有消息

我们正在构建一个模块,该模块是完整嵌入式 Linux 操作系统的一部分。我们正在使用 log4cplus 进行诊断。

log.properties 包含:

log4cplus.logger.Companyglue=TRACE,console

cm_bind_helper.h 包含比这复杂得多的内容。所有 DBG_XXX 消息都显示在控制台上。

#include "qobject.h"
#include "log4cplus/dbglog.h"
class bind_helper : public QObject
{
protected:
    const char *debugModuleName = "Companyglue";
    log4cplus::Logger debugModule { Logger::getInstance(debugModuleName) };

    bool set_value(CMPath path,PType &input)
    {
        auto old_value = CMRoot()->getValue(path);
        if (input != old_value) {
            DBG_DEBUG("Changing " << path << " to " << input);
        }
    }
}

cm_bridge.cpp 包含的代码比这多得多。但是,控制台上没有显示任何 DBG_XXX 消息。

#include "cm_bridge.h"
#include "cm_bind_helpers.h"

struct CompanyContentModelBridge::detail_ : public bind_helper
{
    std::shared_ptr<company::device_base> base;

    detail_(QObject *parent)
        : bind_helper(parent)
    {
        configure_system_advanced_control();
    }
    void configure_system_advanced_control();
    std::string get_exported_file_size();
}

using detail_ = CompanyContentModelBridge::detail_;

void detail_::configure_system_advanced_control()
{
    base->add_get_only_entry<std::string>("SPDSZ",get_exported_file_size());
}

std::string detail_::get_exported_file_size()
{
    DBG_INFO("get exported file size");
    //diag("exported file size");
}

我尝试了多种方法cm_bridge.cpp中配置log4cplus,包括cm_bind_helpers.h中相同的两行,如下所示。假设继承会处理它,我还删除了它们。 DBG_XXX 消息没有显示

DBG_IMPL_DEBUG_MODULE(Companyglue);

最终,我将此函数添加cm_bind_helpers.h。它在从它自己的类调用时有效,但在从 get_exported_file_size() 调用时失败(已删除注释)。

void diag(std::string_view what) {
    DBG_DEBUG("bind helper diag " << what);
}

我被难住了。我不知道为什么从一个文件中抑制消息而不是另一个文件

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。