Qt 6.3.1 painful....
-
@JoeCFD You don't need c++20 to do that,
QMessageLogContext
does give you the same information if you install a proper message handler:static void qt_message_handler(QtMsgType type, [[maybe_unused]] const QMessageLogContext &context, const QString &msg) { const QByteArray localMsg = msg.toLocal8Bit(); #ifdef NDEBUG const auto out_msg = fmt::format("\t{}", localMsg.constData()); #else const char *function = context.function ? context.function : ""; const auto out_msg = fmt::format("\t{} [LINE:{}, {}]", localMsg.constData(), context.line, function); #endif switch (type) { case QtDebugMsg: spdlog::debug(out_msg); break; case QtInfoMsg: spdlog::info(out_msg); break; case QtWarningMsg: spdlog::warn(out_msg); break; case QtCriticalMsg: spdlog::error(out_msg); break; case QtFatalMsg: spdlog::critical(out_msg); spdlog::shutdown(); break; } } void init_logging() { init_spdlog(); qInstallMessageHandler(qt_message_handler); }
I am using spdlog and fmt::format for logging and formatting but in the end you will get almost the same details for all Qt logging calls as with your example.
@DerReisende , thank you, I've done this already for several years, here is the output to my log file:
XMLMPAM start-up Listening to any local IP address on port: 8123 S000000000003E000000000374T09:56:43.345T:DL00004842P../clsMainWnd.cpp[void clsXMLnode::update] "Node:label ID:lbl1 X:12 Y:261 W:100 H:30 Text:<a href=\"http://google.com\" style=\"color:#000000;text-decoration:none;\">Google</a>:" S000000000004E000000000407T09:56:43.378T:DL00003985P../clsMainWnd.cpp[static clsXMLnode *clsXMLnode::spobjParse] "label" S000000000005E000000000408T09:56:43.379T:DL00004842P../clsMainWnd.cpp[void clsXMLnode::update] "Node:label ID:lbl1 X:12 Y:261 W:100 H:30 Text:<a href=\"http://google.com\" style=\"color:#000000;text-decoration:none;\">Google</a>:" S000000000006E000000000408T09:56:43.379T:D:"Node:label ID:lbl1 X:12 Y:261 W:100 H:30 Text:<a href=\"http://google.com\" style=\"color:#000000;text-decoration:none;\">Google</a>:" S000000000007E000000007037T09:56:50.008T:DL00000798P../clsMainWnd.cpp[clsXMLnode::clsXMLnode] "test99" S000000000008E000000007037T09:56:50.008T:DL00003985P../clsMainWnd.cpp[static clsXMLnode *clsXMLnode::spobjParse] "label" S000000000009E000000007104T09:56:50.075T:D:"label" S000000000010E000000007113T09:56:50.084T:D:"label" S000000000011E000000007128T09:56:50.099T:D:"label" Process: Arg[0]: 8123 Process: Arg[1]: 8124 Process: Arg[2]: 24150 Process: Arg[3]: f1 Process is NOT running, launching S000000000014E000000007171T09:56:50.142T:DL00000553P../clsModule.cpp[void clsModule::setProgram] Starting: f1:mdFIO Registering decoder for file simon.js, function: blnDecodeFIOcmd Process: Arg[0]: 8123 Process: Arg[1]: 8125 Process: Arg[2]: 24150 Process: Arg[3]: s1 Process is NOT running, launching S000000000018E000000007177T09:56:50.148T:D:Starting: s1:mdSQL Registering decoder for file simon.js, function: blnDecodeSQLcmd Process: Arg[0]: 8123 Process: Arg[1]: 8126 Process: Arg[2]: 24150 Process: Arg[3]: x1 Process is NOT running, launching S000000000022E000000007182T09:56:50.153T:D:Starting: x1:mdXML Registering decoder for file simon.js, function: blnDecodeXMLcmd S000000000024E000000007234T09:56:50.205T:DL00000571P../clsModule.cpp[auto clsModule::setProgram] PID for mdXML: 24171, On port: 8123 Process: mdXML started S000000000026E000000007234T09:56:50.205T:D:PID for mdFIO: 24165, On port: 8123 Process: mdFIO started S000000000028E000000007234T09:56:50.205T:D:PID for mdSQL: 24168, On port: 8123 Process: mdSQL started Client connecting... Client connecting... Client connecting... Client connected Client connected Client connected !s1!Client connecting... !s1!Client connected !f1!Client connecting... !f1!Client connected !x1!Client connecting... !x1!Client connected !f1!S000000000042E000000000131T09:56:50.347DL00000731F../mdFIO/clsModFIO.cpp[void clsModFIO::doComm !f1!S000000000042E000000000131T09:56:50.347DL00000731F../mdFIO/clsModFIO.cpp[void clsModFIO::doCommand] 2022-08-17 08:56:50, Command#1: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb !f1!S000000000043E000000000131T09:56:50.347D:Length !f1!S000000000043E000000000131T09:56:50.347D:Length: 1 !f1!S000000000044E000000000131T09:56:50.347D:2022-08 !f1!S000000000044E000000000131T09:56:50.347D:2022-08-17 08:56:50, Command#2: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb !f1!S000000000045E000000000131T09:56:50.347D:Length !f1!S000000000045E000000000131T09:56:50.347D:Length: 2 !f1!S000000000046E000000000131T09:56:50.347D:2022-08 !f1!S000000000046E000000000131T09:56:50.347D:2022-08-17 08:56:50, Command#3: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb !f1!S000000000047E000000000131T09:56:50.347D:Length !f1!S000000000047E000000000131T09:56:50.347D:Length: 4 !f1!S000000000048E000000000131T09:56:50.348D:2022-08 !f1!S000000000048E000000000131T09:56:50.348D:2022-08-17 08:56:50, Command#4: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb !f1!S000000000049E000000000131T09:56:50.348D:Length !f1!S000000000049E000000000131T09:56:50.348D:Length: 8 !f1!S000000000050E000000000131T09:56:50.348D:2022-08 !f1!S000000000050E000000000131T09:56:50.348D:2022-08-17 08:56:50, Command#5: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb !f1!S000000000051E000000000131T09:56:50.348D:Length !f1!S000000000051E000000000131T09:56:50.348D:Length: 4 !f1!S000000000052E000000000131T09:56:50.348D:2022-08 !f1!S000000000052E000000000131T09:56:50.348D:2022-08-17 08:56:50, Command#6: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb !f1!S000000000053E000000000131T09:56:50.348D:Length !f1!S000000000053E000000000131T09:56:50.348D:Length: 8 !f1!S000000000054E000000000132T09:56:50.348D:2022-08 !f1!S000000000054E000000000132T09:56:50.348D:2022-08-17 08:56:50, Command#7: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb !f1!S000000000055E000000000132T09:56:50.348D:Length !f1!S000000000055E000000000132T09:56:50.348D:Length: 27 !f1!S000000000056E000000000132T09:56:50.348D:2022-08 !f1!S000000000056E000000000132T09:56:50.348D:2022-08-17 08:56:50, Command#8: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb !f1!S000000000057E000000000132T09:56:50.348D:Length !f1!S000000000057E000000000132T09:56:50.348D:Length: 1 !f1!S000000000058E000000000132T09:56:50.348D:2022-08 !f1!S000000000058E000000000132T09:56:50.348D:2022-08-17 08:56:50, Command#9: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb !f1!S000000000059E000000000132T09:56:50.348D:Length !f1!S000000000059E000000000132T09:56:50.348D:Length: 2 !f1!S000000000060E000000000132T09:56:50.348D:2022-08 !f1!S000000000060E000000000132T09:56:50.348D:2022-08-17 08:56:50, Command#10: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb !f1!S000000000061E000000000132T09:56:50.348D:Length !f1!S000000000061E000000000132T09:56:50.348D:Length: 4 !f1!S000000000062E000000000132T09:56:50.348D:2022-08 !f1!S000000000062E000000000132T09:56:50.348D:2022-08-17 08:56:50, Command#11: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb !f1!S000000000063E000000000132T09:56:50.348D:Length !f1!S000000000063E000000000132T09:56:50.348D:Length: 8 !f1!S000000000064E000000000132T09:56:50.348D:2022-08 !f1!S000000000064E000000000132T09:56:50.348D:2022-08-17 08:56:50, Command#12: find, File: /Users/sy/XMLMPAM/config/test.dat, Mode: r !f1!S000000000065E000000000132T09:56:50.348D:Length !f1!S000000000065E000000000132T09:56:50.348D:Length: 18446744073709551615 !f1!S000000000066E000000000132T09:56:50.349D:2022-08 !f1!S000000000066E000000000132T09:56:50.349D:2022-08-17 08:56:50, Command#13: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rt !f1!S000000000067E000000000132T09:56:50.349D:Length !f1!S000000000067E000000000132T09:56:50.349D:Length: 3 !f1!S000000000068E000000000132T09:56:50.349D:2022-08 !f1!S000000000068E000000000132T09:56:50.349D:2022-08-17 08:56:50, Command#14: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rt !f1!S000000000069E000000000132T09:56:50.349D:Length !f1!S000000000069E000000000132T09:56:50.349D:Length: 4 !f1!S000000000070E000000000132T09:56:50.349D:2022-08 !f1!S000000000070E000000000132T09:56:50.349D:2022-08-17 08:56:50, Command#15: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rt !f1!S000000000071E000000000132T09:56:50.349D:Positio !f1!S000000000071E000000000132T09:56:50.349D:Position: -15 !f1!S000000000072E000000000133T09:56:50.349D:Length !f1!S000000000072E000000000133T09:56:50.349D:Length: 5 !f1!S000000000073E000000000133T09:56:50.349D:2022-08 !f1!S000000000073E000000000133T09:56:50.349D:2022-08-17 08:56:50, Command#16: tell, File: /Users/sy/XMLMPAM/config/test.dat, Mode: r !f1!S000000000074E000000000133T09:56:50.349D:Length !f1!S000000000074E000000000133T09:56:50.349D:Length: 18446744073709551615 !s1!S000000000008E000000000137T09:56:50.343DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000008E000000000137T09:56:50.343DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"command":"connect","params":{"database":"test","driver":"QMYSQL","host":"localhost","pass":"resuocra","usr":"root"}} !s1!S000000000009E000000000179T09:56:50.384DL00000212F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000009E000000000179T09:56:50.384DL00000212F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"command":"connect","output":"connected"} S000000000036E000000007753T09:56:50.724T:W:QObject: Cannot create children for a parent that is in a different thread. (Parent is QNativeSocketEngine(0x600000012910), parent's thread is clsServer(0x600000257fc0), current thread is clsThread(0x600002c2a000) !s1!S000000000010E000000000519T09:56:50.724DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000010E000000000519T09:56:50.724DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm LIMIT ?;"} !s1!S000000000011E000000000521T09:56:50.726DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000011E000000000521T09:56:50.726DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"command":"query","handler":"simon2.js@testFormHandler","output":"connected","records":[{"intEmployed":"1","intPri":"1","vcAddress":"Latona House\nStation Road\nCantley\nNorfolk\nNR13 3SQ","vcFirstName":"Simon","vcSex":"Male","vcSurName":"Platten"},{"intEmployed":"1","intPri":"2","vcAddress":"Latona House\nStation Road\nCantley\nNorfolk\nNR13 3SQ","vcFirstName":"Susan","vcSex":"Female","vcSurName":"Platten"}]} !s1!S000000000012E000000000781T09:56:50.987DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000012E000000000781T09:56:50.987DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"} !s1!S000000000013E000000000782T09:56:50.987DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000013E000000000782T09:56:50.987DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"} !s1!S000000000014E000000001044T09:56:51.249DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000014E000000001044T09:56:51.249DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"} !s1!S000000000015E000000001044T09:56:51.249DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000015E000000001044T09:56:51.249DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"} !s1!S000000000016E000000001304T09:56:51.510DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000016E000000001304T09:56:51.510DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"} !s1!S000000000017E000000001305T09:56:51.510DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000017E000000001305T09:56:51.510DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"} !s1!S000000000018E000000001562T09:56:51.767DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000018E000000001562T09:56:51.767DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"} !s1!S000000000019E000000001562T09:56:51.768DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000019E000000001562T09:56:51.768DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"} !s1!S000000000020E000000001812T09:56:52.017DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000020E000000001812T09:56:52.017DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"} !s1!S000000000021E000000001812T09:56:52.017DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000021E000000001812T09:56:52.017DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"} S000000000037E000000009157T09:56:52.128T:W:QObject: Cannot create children for a parent that is in a different thread. (Parent is QNativeSocketEngine(0x600000025290), parent's thread is clsServer(0x600000255400), current thread is clsThread(0x600002c2a000) S000000000038E000000009158T09:56:52.129T:W:QObject: Cannot create children for a parent that is in a different thread. (Parent is QNativeSocketEngine(0x6000000196e0), parent's thread is clsServer(0x600000256f60), current thread is clsThread(0x600002c2a000)
Where:
S is the sequence number
E is the elapsed time
T is the time stamp
T:C Type:Critical warning
T:D Type:Debug message
T:F Type:Fatal error
T:W Type:Warning
L is the line number
P is the path and file nameThis is what is shown in the Application Output which suggests the issue is generated during the initialisation of QApplication.
10:04:03: Debugging /Users/sy/XMLMPAM/build-XMLMPAM-Desktop_Qt_5_15_2_clang_64bit-Debug/XMLMPAM.app/Contents/MacOS/XMLMPAM ~/XMLMPAM/config/xmlmpam ... got fallback qt version 0x50f02 2022-08-17 10:04:08.921420+0100 XMLMPAM[24714:211122] SecTaskLoadEntitlements failed error=22 cs_flags=20, pid=24714 2022-08-17 10:04:08.921503+0100 XMLMPAM[24714:211122] SecTaskCopyDebugDescription: XMLMPAM[24714]/0#-1 LF=0 2022-08-17 10:04:09.414338+0100 XMLMPAM[24714:211122] SecTaskLoadEntitlements failed error=22 cs_flags=20, pid=24714 2022-08-17 10:04:09.414418+0100 XMLMPAM[24714:211122] SecTaskCopyDebugDescription: XMLMPAM[24714]/0#-1 LF=0
Found this:
https://apple.stackexchange.com/questions/237465/what-means-sectaskloadentlitlements-failed-error-22 -
@JoeCFD You don't need c++20 to do that,
QMessageLogContext
does give you the same information if you install a proper message handler:static void qt_message_handler(QtMsgType type, [[maybe_unused]] const QMessageLogContext &context, const QString &msg) { const QByteArray localMsg = msg.toLocal8Bit(); #ifdef NDEBUG const auto out_msg = fmt::format("\t{}", localMsg.constData()); #else const char *function = context.function ? context.function : ""; const auto out_msg = fmt::format("\t{} [LINE:{}, {}]", localMsg.constData(), context.line, function); #endif switch (type) { case QtDebugMsg: spdlog::debug(out_msg); break; case QtInfoMsg: spdlog::info(out_msg); break; case QtWarningMsg: spdlog::warn(out_msg); break; case QtCriticalMsg: spdlog::error(out_msg); break; case QtFatalMsg: spdlog::critical(out_msg); spdlog::shutdown(); break; } } void init_logging() { init_spdlog(); qInstallMessageHandler(qt_message_handler); }
I am using spdlog and fmt::format for logging and formatting but in the end you will get almost the same details for all Qt logging calls as with your example.
@DerReisende the log function in C++ 20 seems simpler. I use both spdlog and Qt logger.
-
@DerReisende , thank you, I've done this already for several years, here is the output to my log file:
XMLMPAM start-up Listening to any local IP address on port: 8123 S000000000003E000000000374T09:56:43.345T:DL00004842P../clsMainWnd.cpp[void clsXMLnode::update] "Node:label ID:lbl1 X:12 Y:261 W:100 H:30 Text:<a href=\"http://google.com\" style=\"color:#000000;text-decoration:none;\">Google</a>:" S000000000004E000000000407T09:56:43.378T:DL00003985P../clsMainWnd.cpp[static clsXMLnode *clsXMLnode::spobjParse] "label" S000000000005E000000000408T09:56:43.379T:DL00004842P../clsMainWnd.cpp[void clsXMLnode::update] "Node:label ID:lbl1 X:12 Y:261 W:100 H:30 Text:<a href=\"http://google.com\" style=\"color:#000000;text-decoration:none;\">Google</a>:" S000000000006E000000000408T09:56:43.379T:D:"Node:label ID:lbl1 X:12 Y:261 W:100 H:30 Text:<a href=\"http://google.com\" style=\"color:#000000;text-decoration:none;\">Google</a>:" S000000000007E000000007037T09:56:50.008T:DL00000798P../clsMainWnd.cpp[clsXMLnode::clsXMLnode] "test99" S000000000008E000000007037T09:56:50.008T:DL00003985P../clsMainWnd.cpp[static clsXMLnode *clsXMLnode::spobjParse] "label" S000000000009E000000007104T09:56:50.075T:D:"label" S000000000010E000000007113T09:56:50.084T:D:"label" S000000000011E000000007128T09:56:50.099T:D:"label" Process: Arg[0]: 8123 Process: Arg[1]: 8124 Process: Arg[2]: 24150 Process: Arg[3]: f1 Process is NOT running, launching S000000000014E000000007171T09:56:50.142T:DL00000553P../clsModule.cpp[void clsModule::setProgram] Starting: f1:mdFIO Registering decoder for file simon.js, function: blnDecodeFIOcmd Process: Arg[0]: 8123 Process: Arg[1]: 8125 Process: Arg[2]: 24150 Process: Arg[3]: s1 Process is NOT running, launching S000000000018E000000007177T09:56:50.148T:D:Starting: s1:mdSQL Registering decoder for file simon.js, function: blnDecodeSQLcmd Process: Arg[0]: 8123 Process: Arg[1]: 8126 Process: Arg[2]: 24150 Process: Arg[3]: x1 Process is NOT running, launching S000000000022E000000007182T09:56:50.153T:D:Starting: x1:mdXML Registering decoder for file simon.js, function: blnDecodeXMLcmd S000000000024E000000007234T09:56:50.205T:DL00000571P../clsModule.cpp[auto clsModule::setProgram] PID for mdXML: 24171, On port: 8123 Process: mdXML started S000000000026E000000007234T09:56:50.205T:D:PID for mdFIO: 24165, On port: 8123 Process: mdFIO started S000000000028E000000007234T09:56:50.205T:D:PID for mdSQL: 24168, On port: 8123 Process: mdSQL started Client connecting... Client connecting... Client connecting... Client connected Client connected Client connected !s1!Client connecting... !s1!Client connected !f1!Client connecting... !f1!Client connected !x1!Client connecting... !x1!Client connected !f1!S000000000042E000000000131T09:56:50.347DL00000731F../mdFIO/clsModFIO.cpp[void clsModFIO::doComm !f1!S000000000042E000000000131T09:56:50.347DL00000731F../mdFIO/clsModFIO.cpp[void clsModFIO::doCommand] 2022-08-17 08:56:50, Command#1: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb !f1!S000000000043E000000000131T09:56:50.347D:Length !f1!S000000000043E000000000131T09:56:50.347D:Length: 1 !f1!S000000000044E000000000131T09:56:50.347D:2022-08 !f1!S000000000044E000000000131T09:56:50.347D:2022-08-17 08:56:50, Command#2: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb !f1!S000000000045E000000000131T09:56:50.347D:Length !f1!S000000000045E000000000131T09:56:50.347D:Length: 2 !f1!S000000000046E000000000131T09:56:50.347D:2022-08 !f1!S000000000046E000000000131T09:56:50.347D:2022-08-17 08:56:50, Command#3: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb !f1!S000000000047E000000000131T09:56:50.347D:Length !f1!S000000000047E000000000131T09:56:50.347D:Length: 4 !f1!S000000000048E000000000131T09:56:50.348D:2022-08 !f1!S000000000048E000000000131T09:56:50.348D:2022-08-17 08:56:50, Command#4: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb !f1!S000000000049E000000000131T09:56:50.348D:Length !f1!S000000000049E000000000131T09:56:50.348D:Length: 8 !f1!S000000000050E000000000131T09:56:50.348D:2022-08 !f1!S000000000050E000000000131T09:56:50.348D:2022-08-17 08:56:50, Command#5: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb !f1!S000000000051E000000000131T09:56:50.348D:Length !f1!S000000000051E000000000131T09:56:50.348D:Length: 4 !f1!S000000000052E000000000131T09:56:50.348D:2022-08 !f1!S000000000052E000000000131T09:56:50.348D:2022-08-17 08:56:50, Command#6: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb !f1!S000000000053E000000000131T09:56:50.348D:Length !f1!S000000000053E000000000131T09:56:50.348D:Length: 8 !f1!S000000000054E000000000132T09:56:50.348D:2022-08 !f1!S000000000054E000000000132T09:56:50.348D:2022-08-17 08:56:50, Command#7: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb !f1!S000000000055E000000000132T09:56:50.348D:Length !f1!S000000000055E000000000132T09:56:50.348D:Length: 27 !f1!S000000000056E000000000132T09:56:50.348D:2022-08 !f1!S000000000056E000000000132T09:56:50.348D:2022-08-17 08:56:50, Command#8: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb !f1!S000000000057E000000000132T09:56:50.348D:Length !f1!S000000000057E000000000132T09:56:50.348D:Length: 1 !f1!S000000000058E000000000132T09:56:50.348D:2022-08 !f1!S000000000058E000000000132T09:56:50.348D:2022-08-17 08:56:50, Command#9: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb !f1!S000000000059E000000000132T09:56:50.348D:Length !f1!S000000000059E000000000132T09:56:50.348D:Length: 2 !f1!S000000000060E000000000132T09:56:50.348D:2022-08 !f1!S000000000060E000000000132T09:56:50.348D:2022-08-17 08:56:50, Command#10: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb !f1!S000000000061E000000000132T09:56:50.348D:Length !f1!S000000000061E000000000132T09:56:50.348D:Length: 4 !f1!S000000000062E000000000132T09:56:50.348D:2022-08 !f1!S000000000062E000000000132T09:56:50.348D:2022-08-17 08:56:50, Command#11: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb !f1!S000000000063E000000000132T09:56:50.348D:Length !f1!S000000000063E000000000132T09:56:50.348D:Length: 8 !f1!S000000000064E000000000132T09:56:50.348D:2022-08 !f1!S000000000064E000000000132T09:56:50.348D:2022-08-17 08:56:50, Command#12: find, File: /Users/sy/XMLMPAM/config/test.dat, Mode: r !f1!S000000000065E000000000132T09:56:50.348D:Length !f1!S000000000065E000000000132T09:56:50.348D:Length: 18446744073709551615 !f1!S000000000066E000000000132T09:56:50.349D:2022-08 !f1!S000000000066E000000000132T09:56:50.349D:2022-08-17 08:56:50, Command#13: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rt !f1!S000000000067E000000000132T09:56:50.349D:Length !f1!S000000000067E000000000132T09:56:50.349D:Length: 3 !f1!S000000000068E000000000132T09:56:50.349D:2022-08 !f1!S000000000068E000000000132T09:56:50.349D:2022-08-17 08:56:50, Command#14: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rt !f1!S000000000069E000000000132T09:56:50.349D:Length !f1!S000000000069E000000000132T09:56:50.349D:Length: 4 !f1!S000000000070E000000000132T09:56:50.349D:2022-08 !f1!S000000000070E000000000132T09:56:50.349D:2022-08-17 08:56:50, Command#15: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rt !f1!S000000000071E000000000132T09:56:50.349D:Positio !f1!S000000000071E000000000132T09:56:50.349D:Position: -15 !f1!S000000000072E000000000133T09:56:50.349D:Length !f1!S000000000072E000000000133T09:56:50.349D:Length: 5 !f1!S000000000073E000000000133T09:56:50.349D:2022-08 !f1!S000000000073E000000000133T09:56:50.349D:2022-08-17 08:56:50, Command#16: tell, File: /Users/sy/XMLMPAM/config/test.dat, Mode: r !f1!S000000000074E000000000133T09:56:50.349D:Length !f1!S000000000074E000000000133T09:56:50.349D:Length: 18446744073709551615 !s1!S000000000008E000000000137T09:56:50.343DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000008E000000000137T09:56:50.343DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"command":"connect","params":{"database":"test","driver":"QMYSQL","host":"localhost","pass":"resuocra","usr":"root"}} !s1!S000000000009E000000000179T09:56:50.384DL00000212F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000009E000000000179T09:56:50.384DL00000212F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"command":"connect","output":"connected"} S000000000036E000000007753T09:56:50.724T:W:QObject: Cannot create children for a parent that is in a different thread. (Parent is QNativeSocketEngine(0x600000012910), parent's thread is clsServer(0x600000257fc0), current thread is clsThread(0x600002c2a000) !s1!S000000000010E000000000519T09:56:50.724DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000010E000000000519T09:56:50.724DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm LIMIT ?;"} !s1!S000000000011E000000000521T09:56:50.726DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000011E000000000521T09:56:50.726DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"command":"query","handler":"simon2.js@testFormHandler","output":"connected","records":[{"intEmployed":"1","intPri":"1","vcAddress":"Latona House\nStation Road\nCantley\nNorfolk\nNR13 3SQ","vcFirstName":"Simon","vcSex":"Male","vcSurName":"Platten"},{"intEmployed":"1","intPri":"2","vcAddress":"Latona House\nStation Road\nCantley\nNorfolk\nNR13 3SQ","vcFirstName":"Susan","vcSex":"Female","vcSurName":"Platten"}]} !s1!S000000000012E000000000781T09:56:50.987DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000012E000000000781T09:56:50.987DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"} !s1!S000000000013E000000000782T09:56:50.987DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000013E000000000782T09:56:50.987DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"} !s1!S000000000014E000000001044T09:56:51.249DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000014E000000001044T09:56:51.249DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"} !s1!S000000000015E000000001044T09:56:51.249DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000015E000000001044T09:56:51.249DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"} !s1!S000000000016E000000001304T09:56:51.510DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000016E000000001304T09:56:51.510DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"} !s1!S000000000017E000000001305T09:56:51.510DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000017E000000001305T09:56:51.510DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"} !s1!S000000000018E000000001562T09:56:51.767DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000018E000000001562T09:56:51.767DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"} !s1!S000000000019E000000001562T09:56:51.768DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000019E000000001562T09:56:51.768DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"} !s1!S000000000020E000000001812T09:56:52.017DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000020E000000001812T09:56:52.017DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"} !s1!S000000000021E000000001812T09:56:52.017DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC !s1!S000000000021E000000001812T09:56:52.017DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd] {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"} S000000000037E000000009157T09:56:52.128T:W:QObject: Cannot create children for a parent that is in a different thread. (Parent is QNativeSocketEngine(0x600000025290), parent's thread is clsServer(0x600000255400), current thread is clsThread(0x600002c2a000) S000000000038E000000009158T09:56:52.129T:W:QObject: Cannot create children for a parent that is in a different thread. (Parent is QNativeSocketEngine(0x6000000196e0), parent's thread is clsServer(0x600000256f60), current thread is clsThread(0x600002c2a000)
Where:
S is the sequence number
E is the elapsed time
T is the time stamp
T:C Type:Critical warning
T:D Type:Debug message
T:F Type:Fatal error
T:W Type:Warning
L is the line number
P is the path and file nameThis is what is shown in the Application Output which suggests the issue is generated during the initialisation of QApplication.
10:04:03: Debugging /Users/sy/XMLMPAM/build-XMLMPAM-Desktop_Qt_5_15_2_clang_64bit-Debug/XMLMPAM.app/Contents/MacOS/XMLMPAM ~/XMLMPAM/config/xmlmpam ... got fallback qt version 0x50f02 2022-08-17 10:04:08.921420+0100 XMLMPAM[24714:211122] SecTaskLoadEntitlements failed error=22 cs_flags=20, pid=24714 2022-08-17 10:04:08.921503+0100 XMLMPAM[24714:211122] SecTaskCopyDebugDescription: XMLMPAM[24714]/0#-1 LF=0 2022-08-17 10:04:09.414338+0100 XMLMPAM[24714:211122] SecTaskLoadEntitlements failed error=22 cs_flags=20, pid=24714 2022-08-17 10:04:09.414418+0100 XMLMPAM[24714:211122] SecTaskCopyDebugDescription: XMLMPAM[24714]/0#-1 LF=0
Found this:
https://apple.stackexchange.com/questions/237465/what-means-sectaskloadentlitlements-failed-error-22@SPlatten Then maybe this procedure might help you with qmake to get an entitlement running. Apart from networking I dont know what else you might need.
With CMake it should be easier to add an entitlement to your qt app -
@DerReisende the log function in C++ 20 seems simpler. I use both spdlog and Qt logger.
@JoeCFD Yes, your link looks simpler, I only wanted to highlight that you can get almost the same result if you want to stay with c++17.
And I am sort of reluctant to use c++20 as I got shot several times in the foot trying to compile code on macOS Xcode clang which was written on windows with VC++ :( XCode‘s clang seems to be not the most modern clang available and does lack quite some features available elsewhere. -
@JoeCFD Yes, your link looks simpler, I only wanted to highlight that you can get almost the same result if you want to stay with c++17.
And I am sort of reluctant to use c++20 as I got shot several times in the foot trying to compile code on macOS Xcode clang which was written on windows with VC++ :( XCode‘s clang seems to be not the most modern clang available and does lack quite some features available elsewhere.@DerReisende I am switching to Ubuntu 22 which has complete C++20 features and am looking forward to using more C++20 features in the hope of making code simpler and more organized. Linking more libs is often annoying. I prefer to use fewer third party libs. Version matching and compatibility are painful in deployment.
-
@SPlatten Then maybe this procedure might help you with qmake to get an entitlement running. Apart from networking I dont know what else you might need.
With CMake it should be easier to add an entitlement to your qt app@DerReisende , I'm really not sure what the messages SecTaskLoadEntitlements mean or what action I need to take?
-
@DerReisende , I'm really not sure what the messages SecTaskLoadEntitlements mean or what action I need to take?
@SPlatten The entitlement stuff should have no impact for local development but will be necessary for deployment to other machines later with the hardened runtime otherwise you might not get any network connectivity etc.
Do you still have those crashes from the beginning of the thread? -
@DerReisende I am switching to Ubuntu 22 which has complete C++20 features and am looking forward to using more C++20 features in the hope of making code simpler and more organized. Linking more libs is often annoying. I prefer to use fewer third party libs. Version matching and compatibility are painful in deployment.
-
@DerReisende said in Qt 6.3.1 painful....:
wishing you could have VC++ on macOS :D
no-one wishes to use MSVC !🤪
-
@DerReisende said in Qt 6.3.1 painful....:
wishing you could have VC++ on macOS :D
no-one wishes to use MSVC !🤪