C++ libusb_set_log_cb:日志中的垃圾邮件

C++ libusb_set_log_cb:日志中的垃圾邮件,c++,libusb,C++,Libusb,在libusb1.0.23中添加了libusb\u set\u log\u cb功能。我在代码中使用此函数进行日志记录。我有libusb_log_cb函数: // In this function I am checking the libusb_log_level then call my log function // that takes the my logger class, my enum with the log levels and str for logging. // My

在libusb1.0.23中添加了libusb\u set\u log\u cb功能。我在代码中使用此函数进行日志记录。我有libusb_log_cb函数:

// In this function I am checking the libusb_log_level then call my log function
// that takes the my logger class, my enum with the log levels and str for logging.
// My log func logs the argument "str" in the file "libusbLogs.log" with the MY_LEVELS level.
void libusbLog(libusb_context* ctx, enum libusb_log_level level, const char* str)
{
    switch (level)
    {
    case LIBUSB_LOG_LEVEL_ERROR:    myFuncForLog(myLogger, MY_LEVELS::LOG_ERROR, 
        "[ctx: " << ctx << "]: " << str); 
        break;
    case LIBUSB_LOG_LEVEL_WARNING:  myFuncForLog(myLogger, MY_LEVELS::LOG_WARNING,
        "[ctx: " << ctx << "]: " << str);
        break;
    case LIBUSB_LOG_LEVEL_INFO:     myFuncForLog(myLogger, MY_LEVELS::LOG_INFO,
        "[ctx: " << ctx << "]: " << str);
        break;
    case LIBUSB_LOG_LEVEL_DEBUG:    myFuncForLog(myLogger, MY_LEVELS::LOG_DEBUG,
        "[ctx: " << ctx << "]: " << str);
        break;
    }
}
我尝试每n次记录一次。但这是不正确的,因为我丢失了一些日志消息


有什么想法?

你有没有考虑过只有通过某种标志时才输出调试日志?@Botje,没有,我没有,你现在考虑过吗?:)@博杰,是的。在这种情况下我可以使用哪种标志?常见的解决方案是程序的命令行参数(如
--verbose
--debug
)或环境变量。(
IVAN_LOG_DEBUG=1
)在主函数中检查它,并相应地设置一个全局变量。
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.099145] [000028b4] libusb: debug [libusb_alloc_transfer] transfer 000001EBC07ECDE8
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.101217] [000028b4] libusb: debug [libusb_submit_transfer] transfer 000001EBC07ECDE8
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.102180] [000028b4] libusb: debug [usbi_add_pollfd] add fd 2 events 1
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.102895] [000028b4] libusb: debug [hid_submit_bulk_transfer] matched endpoint 81 with interface 0
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.103864] [000028b4] libusb: debug [hid_submit_bulk_transfer] reading 256 bytes (report ID: 0x00)
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.105138] [000028b4] libusb: debug [libusb_get_next_timeout] next timeout in 0.001000s
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.105971] [000028b4] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.107024] [000028b4] libusb: debug [handle_events] poll fds modified, reallocating
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.107822] [000028b4] libusb: debug [handle_events] poll() 2 fds with timeout in 1ms
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.109117] [000028b4] libusb: debug [handle_events] poll() returned 0
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.109920] [000028b4] libusb: debug [libusb_cancel_transfer] transfer 000001EBC07ECDE8
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.110966] [000028b4] libusb: debug [hid_abort_transfers] will use interface 0
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.111787] [000028b4] libusb: debug [libusb_get_next_timeout] no URB with timeout or all handled by OS; no timeout!
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.112857] [000028b4] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.113848] [000028b4] libusb: debug [handle_events] poll() 2 fds with timeout in 60000ms
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.114696] [000028b4] libusb: debug [handle_events] poll() returned 1
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.115409] [000028b4] libusb: debug [windows_handle_events] checking fd 2 with revents = 0001
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.116292] [000028b4] libusb: debug [usbi_remove_pollfd] remove fd 2
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.117005] [000028b4] libusb: debug [windows_transfer_callback] handling I/O completion with errcode 995, size 0
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.118187] [000028b4] libusb: debug [windows_transfer_callback] detected operation aborted
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.119049] [000028b4] libusb: debug [usbi_handle_transfer_cancellation] detected timeout cancellation
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.120014] [000028b4] libusb: debug [usbi_handle_transfer_completion] transfer 000001EBC07ECDE8 has callback 00007FFDFFB644C0
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.121241] [000028b4] libusb: debug [sync_transfer_cb] actual_length=0
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.121935] [000028b4] libusb: debug [libusb_free_transfer] transfer 000001EBC07ECDE8
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.128270] [000028b4] libusb: debug [libusb_alloc_transfer] transfer 000001EBC07ED028
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.129688] [000028b4] libusb: debug [libusb_submit_transfer] transfer 000001EBC07ED028
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.130563] [000028b4] libusb: debug [usbi_add_pollfd] add fd 2 events 1
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.131298] [000028b4] libusb: debug [hid_submit_bulk_transfer] matched endpoint 81 with interface 0
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.132267] [000028b4] libusb: debug [hid_submit_bulk_transfer] reading 256 bytes (report ID: 0x00)
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.133239] [000028b4] libusb: debug [libusb_get_next_timeout] next timeout in 0.001300s
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.134218] [000028b4] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.135238] [000028b4] libusb: debug [handle_events] poll fds modified, reallocating
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.136088] [000028b4] libusb: debug [handle_events] poll() 2 fds with timeout in 2ms
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.140041] [000028b4] libusb: debug [handle_events] poll() returned 0
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.140898] [000028b4] libusb: debug [libusb_cancel_transfer] transfer 000001EBC07ED028
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.141772] [000028b4] libusb: debug [hid_abort_transfers] will use interface 0
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.143292] [000028b4] libusb: debug [libusb_get_next_timeout] no URB with timeout or all handled by OS; no timeout!
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.144385] [000028b4] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.145395] [000028b4] libusb: debug [handle_events] poll() 2 fds with timeout in 60000ms
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.146376] [000028b4] libusb: debug [handle_events] poll() returned 1
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.147042] [000028b4] libusb: debug [windows_handle_events] checking fd 2 with revents = 0001
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.147921] [000028b4] libusb: debug [usbi_remove_pollfd] remove fd 2
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.148580] [000028b4] libusb: debug [windows_transfer_callback] handling I/O completion with errcode 995, size 0
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.149646] [000028b4] libusb: debug [windows_transfer_callback] detected operation aborted
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.150669] [000028b4] libusb: debug [usbi_handle_transfer_cancellation] detected timeout cancellation
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.151635] [000028b4] libusb: debug [usbi_handle_transfer_completion] transfer 000001EBC07ED028 has callback 00007FFDFFB644C0
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.152806] [000028b4] libusb: debug [sync_transfer_cb] actual_length=0
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.153513] [000028b4] libusb: debug [libusb_free_transfer] transfer 000001EBC07ED028
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.160173] [000028b4] libusb: debug [libusb_alloc_transfer] transfer 000001EBC07EBD08
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.161977] [000028b4] libusb: debug [libusb_submit_transfer] transfer 000001EBC07EBD08
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.163117] [000028b4] libusb: debug [usbi_add_pollfd] add fd 2 events 1
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.163940] [000028b4] libusb: debug [hid_submit_bulk_transfer] matched endpoint 81 with interface 0
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.164930] [000028b4] libusb: debug [hid_submit_bulk_transfer] reading 256 bytes (report ID: 0x00)
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.165952] [000028b4] libusb: debug [libusb_get_next_timeout] next timeout in 0.001200s
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.166844] [000028b4] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.167962] [000028b4] libusb: debug [handle_events] poll fds modified, reallocating
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.168822] [000028b4] libusb: debug [handle_events] poll() 2 fds with timeout in 2ms
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.171975] [000028b4] libusb: debug [handle_events] poll() returned 0
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.172734] [000028b4] libusb: debug [libusb_cancel_transfer] transfer 000001EBC07EBD08
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.173618] [000028b4] libusb: debug [hid_abort_transfers] will use interface 0
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.174442] [000028b4] libusb: debug [libusb_get_next_timeout] no URB with timeout or all handled by OS; no timeout!
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.175588] [000028b4] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.176669] [000028b4] libusb: debug [handle_events] poll() 2 fds with timeout in 60000ms
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.177578] [000028b4] libusb: debug [handle_events] poll() returned 1
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.178311] [000028b4] libusb: debug [windows_handle_events] checking fd 2 with revents = 0001
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.179260] [000028b4] libusb: debug [usbi_remove_pollfd] remove fd 2
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.179974] [000028b4] libusb: debug [windows_transfer_callback] handling I/O completion with errcode 995, size 0
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.181103] [000028b4] libusb: debug [windows_transfer_callback] detected operation aborted
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.182046] [000028b4] libusb: debug [usbi_handle_transfer_cancellation] detected timeout cancellation
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.183108] [000028b4] libusb: debug [usbi_handle_transfer_completion] transfer 000001EBC07EBD08 has callback 00007FFDFFB644C0
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.184415] [000028b4] libusb: debug [sync_transfer_cb] actual_length=0
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.185164] [000028b4] libusb: debug [libusb_free_transfer] transfer 000001EBC07EBD08
UsbUtils::UsbProvider::libusbLog : [ctx: 000001EBC1173AC0]: [ 0.191991] [000028b4] libusb: debug [libusb_alloc_transfer] transfer 000001EBC07EBBE8