Fwd: [ABANDONED] Remove some excessive log formatting
Luboš Luňák
l.lunak at collabora.com
Fri Nov 22 11:13:21 UTC 2019
On Thursday 21 of November 2019, Stephan Bergmann wrote:
> My concerns are:
>
> * We may eventually want to enable SAL_WARN/SAL_INFO for production
> builds, at which point the space cost of log message strings might
> become an issue.
Space cost? The size of /usr/lib64/libreoffice/program/*.so here is about
200MiB. Even if we had 2MiB of log messages code, which would be probably an
insane amount, that'd be still a negligible 1%.
> * Too much trivial SAL_INFO noise (that was once added ad-hoc and should
> arguably have only been in a developer's local build) can make it
> unnecessarily hard to see the more relevant SAL_INFOs (and log area
> granularity is limited in practice). Of course, it is hard to tell how
> much of the existing SAL_INFO use falls under that noise category.
If I'm not mistaken, all SAL_INFO is disabled by default, which trivially
solves that. In case you meant SAL_WARN, that indeed can be a problem, but
rather a problem of either there being too many warnings that nobody cares
about, or those warnings not actually being important enough to be warnings.
> When I had originally designed SAL_WARN/SAL_INFO, I had anticipated use
> along the lines of:
>
> * Use SAL_WARN if it is an obviously erroneous unusual event. Like
>
> > SAL_WARN_IF(
> > *ppLibraryUrl == nullptr, "sal.osl", "rtl_string2UString
> > failed");
>
> in osl_getModuleURLFromAddress (sal/osl/unx/module.cxx), where it warns
> if the passed-in ppLibraryUrl cannot be converted to an 8-bit string.
I think that if something is an obvious error, then the code should just
plain assert. IMO the codebase is way too defensive and it's one of the
reasons why there are so many warnings that nobody cares about - because they
do not have to.
> I do not claim that this is the only reasonable approach to using
> SAL_WARN/SAL_INFO, and I have seen more liberal use effectively from day
> one. But I'm always a little concerned, for the reasons outlined above,
> when I come across what looks like overly liberal use of SAL_INFO.
One way to address your concerns might be by adding SAL_TRACE (or whatever
it'd be named), which would be even one level lower than SAL_INFO and it
wouldn't even be compiled in release builds if we get to the point of keeping
SAL_INFO for those. But when we got to looking at the actual issue, how this
would actually matter. The purpose of keeping SAL_INFO in release builds
would be presumably that users could provide such output when asked for e.g.
in bugzilla, but then how to decide where to draw the line? If I want the
debug output, I probably want all of it.
And of course all of this matters only if it actually matters in practice.
I'm still fairly convinced that both the space and time cost can be
negligible, you have designed it to be pretty cheap if not used (with the
possible exception of sal_detail_log_report(), but that could be improved if
needed).
--
Luboš Luňák
l.lunak at collabora.com
More information about the LibreOffice
mailing list