Golang + Qt5.13.0将QML错误信息输入到日志中

Golang + Qt5.13.0将QML错误信息输入到日志中

以下为Golang解决方案代码,照搬即可

package qlog

/*
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include "qdebug.h"
*/
import "C"
import (
	"Ygs-PQES/log"
	"strings"
)

const (
	QtDebugMsg    = 0
	QtInfoMsg     = 1
	QtWarningMsg  = 2
	QtCriticalMsg = 3
	QtFatalMsg    = 4
	QtSystemMsg   = QtCriticalMsg
)

func init() {
	C.goqdebug_InstallMessageHandler()
}

func goqdebug_cGoUnpackString(s C.struct_QtCore_PackedString) string {
	if int(s.len) == -1 {
		return C.GoString(s.data)
	}
	return C.GoStringN(s.data, C.int(s.len))
}

//export goqdebug_GoMessageHandler
func goqdebug_GoMessageHandler(cmsg C.struct_QtCore_PackedString, msg_type int) {
	msg := goqdebug_cGoUnpackString(cmsg)
	msg_mark := "DEBUG"
	if msg_type == QtDebugMsg {
		msg_mark = "DEBUG"
	} else if msg_type == QtInfoMsg {
		msg_mark = "INFO"
	} else if msg_type == QtWarningMsg {
		msg_mark = "WARNING"
	} else if msg_type == QtCriticalMsg {
		msg_mark = "CRITICAL"
	} else if msg_type == QtFatalMsg {
		msg_mark = "FATAL"
	} else {
		msg_mark = "UNKNOWN"
	}
	//屏蔽Qt5.13.0的错误警告,此警告对性能和功能都没有影响
	if !strings.Contains(msg, "is less than 0") {
		log.Logger.Info(msg_mark + ":" + msg)
	}
}

func Init() {
	C.goqdebug_test()
}

Golang将其编译为C++相关代码。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值