官方在Cocos 3.x 插件中提供了 Editor.Logger.query()
这个方法来获取日志(详见Logger文档),然而该方法返回的是全部日志,而不是最新的日志。当日志数量很多时,调用该方法就会很耗时。
我在 消息系统文档中看见了console:logsUpdate
这个消息事件,然而它触发后返回的是如下内容,并没有最新消息:
{ log: 109, warn: 0, error: 0, info: 31 }
我也尝试使用Electron中webContents的 console-message
进行监听,但是只能获取到部分消息,游戏运行中的console.log()日志无法获取到。
let allwins = electron.BrowserWindow.getAllWindows()
for (let i = 0; i < allwins.length; i++) {
let webContents = allwins[i].webContents
webContents.on('console-message', (event, level, message, line, sourceId)=>{
if (level == 0) {
console.log(`000 ${level} ${message}`)
}
else if (level == 1) {
console.info(`111 ${level} ${message}`)
}
else if (level == 2) {
console.warn(`222 ${level} ${message}`)
}
else if (level == 3) {
console.error(`333 ${level} ${message}`)
}
})
}
我在这篇帖子中发现Cocos 2.x插件似乎有这么一个获取最新日志消息的事件(并未测试)。