Log4Qt %F %M %L 不输出问题

csdn上很多log4qt教学文章写的都是logger->debug("hello");这种调用方式

其实这个不是正确的调用方法,可能是旧版本是这样调用的,这样写是没有行号等信息的

当前版本(2024.9)的正确方式是使用作者指定的lq4Debug等几个宏来输出,但是这几个宏不能单独用,要配合LOG4QT_DECLARE_QCLASS_LOGGER并且是在类里面才能用,具体用法参照https://blog.csdn.net/kl222/article/details/127124550

于是我直接仿造源码里的lq4Debug:

改造成这样就可以了(注意是添加不是改源码),不论是类里还是全局函数等地方到处都能用
 

#define Myl4qFatal(pLogger,...) \
    for (bool enabled = pLogger->isEnabledFor(Log4Qt::Level::FATAL_INT); enabled; enabled = false) \
        Log4Qt::MessageLogger(pLogger, Log4Qt::Level::FATAL_INT, __FILE__, __LINE__, Q_FUNC_INFO).log(__VA_ARGS__)
#define Myl4qError(pLogger,...) \
    for (bool enabled = pLogger->isEnabledFor(Log4Qt::Level::ERROR_INT); enabled; enabled = false) \
        Log4Qt::MessageLogger(pLogger, Log4Qt::Level::ERROR_INT, __FILE__, __LINE__, Q_FUNC_INFO).log(__VA_ARGS__)
#define Myl4qWarn(pLogger,...) \
    for (bool enabled = pLogger->isEnabledFor(Log4Qt::Level::WARN_INT); enabled; enabled = false) \
        Log4Qt::MessageLogger(pLogger, Log4Qt::Level::WARN_INT, __FILE__, __LINE__, Q_FUNC_INFO).log(__VA_ARGS__)
#define Myl4qInfo(pLogger,...) \
    for (bool enabled = pLogger->isEnabledFor(Log4Qt::Level::INFO_INT); enabled; enabled = false) \
        Log4Qt::MessageLogger(pLogger, Log4Qt::Level::INFO_INT, __FILE__, __LINE__, Q_FUNC_INFO).log(__VA_ARGS__)
#define Myl4qDebug(pLogger,...) \
    for (bool enabled = pLogger->isEnabledFor(Log4Qt::Level::DEBUG_INT); enabled; enabled = false) \
        Log4Qt::MessageLogger(pLogger, Log4Qt::Level::DEBUG_INT, __FILE__, __LINE__, Q_FUNC_INFO).log(__VA_ARGS__)
#define Myl4qTrace(pLogger,...) \
    for (bool enabled = pLogger->isEnabledFor(Log4Qt::Level::TRACE_INT); enabled; enabled = false) \
        Log4Qt::MessageLogger(pLogger, Log4Qt::Level::TRACE_INT, __FILE__, __LINE__, Q_FUNC_INFO).log(__VA_ARGS__)



	qDebug() << u8"qDebug你好\n";
	pLogger_Log4Qt->debug(u8"log你好\n");
	Myl4qDebug(pLogger_Log4Qt,u8"log你好-有行号\n");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值