Description
XLink double-spaces the mvLog output often. Nothing breaks, but when the log volume is large and multiple things are logging, the doublespacing doesn't help. 😉
While writing XLink code, I see inconsistencies of mvLog()
format strings. Some have a trailing \n
and some do not.
On Windows and Linux, this trailing newline in the format string causes doublespaced log output on the console.
This can be resolved by choosing a policy, enforcing it, and then adjusting the mvLog calls to follow that policy. Bulk changes are easy with tools like vscode its regex search/replace.
Setup
- XLink at
develop
457b23f - Windows and Linux. Maybe other platforms
- MSVC v16.11.26 and g++ v11.3.0
Repo
Found by watching logs and then mvLog code review. Easy repro is to...
- add the following code at the top of the function
XLinkPlatformFindDevices
mvLog(MVLOG_FATAL, "Test line 1\n");
mvLog(MVLOG_FATAL, "Test line 2\n");
mvLog(MVLOG_FATAL, "Test line 3\n");
- config, build for Debug
- set env var
XLINK_LEVEL=fatal
the value must be lowercase - run the test
examples/list_devices
Result
Both Windows and Linux have double-spaced log entries
F: [global] [ 0] [ThreadN] XLinkPlatformFindDevices:58 Test line 1
F: [global] [ 0] [ThreadN] XLinkPlatformFindDevices:59 Test line 2
F: [global] [ 0] [ThreadN] XLinkPlatformFindDevices:60 Test line 3
Expected
F: [global] [ 0] [ThreadN] XLinkPlatformFindDevices:58 Test line 1
F: [global] [ 0] [ThreadN] XLinkPlatformFindDevices:59 Test line 2
F: [global] [ 0] [ThreadN] XLinkPlatformFindDevices:60 Test line 3
Notes
This is due to use of \n
in the format string. When code calls mvLog(MVLOG_FATAL, "Test line 1\n");
with a trailing space, this causes double-spaced entries due to a trailing newline also added by mvLog() itself. There are 4 platform scenarios. 3/4 adds a newline. 1/4 (Android) doesn't.
Lines 162 to 186 in 457b23f