Repository navigation
Conversation
| /// Sets the verbosity of debug output. | ||
| /// | ||
| /// Use [LogLevel.verbose] for full debug output. Make sure to run this only for debugging purposes. | ||
| /// Use [LogLevel.none] to disable logging. This is also the default. |
There was a problem hiding this comment.
if you set logLevel to LogLevel.none you will disable logs
There was a problem hiding this comment.
Even when setting the logLevel to none, the ressource hungry string interpolation happens. Please reopen!
| /// Sets the logger. | ||
| /// | ||
| /// Set to null to disable logging. | ||
| set logger(Logger? logger) { |
There was a problem hiding this comment.
can you please updated example app?
|
Thanks a lot for contributing, and sorry for closing it. I double-checked, and indeed it uses quite a lot of CPU time. Please update the example app and let's merge this one. It will be available in the next version. |
|
Ok, I will have a look at the example app. How should the behavior be in the example app? The example app still works as it is with the old behavior ( |
|
@Taym95 Otherwise all users have to disable it to get the best performance. This woul mean some more changes in the code and the example. What is your preferred solution? |
It makes sense, but some people are already using this. Functionality will stop working for them when the update happens |
|
Does anybody know why this PR is stuck on "BuildExpected — Waiting for status to be reported" ? I would still appreciate this PR. |
The mobile platform built every log message (including the string interpolation) before the logger checked its level, so logging cost CPU time even with LogLevel.none, which is the default. This is noticeable with high-frequency notifications. Log calls now go through a logger that is null for LogLevel.none, so the null-aware call skips building the message. No public API change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@Taym95 I've reworked this based on our earlier discussion and rebased it onto current master. Instead of a nullable logger, log messages are now only built when the level isn't LogLevel.none. There's no API change, so existing users aren't affected and the example app doesn't need an update. Could you approve the workflow runs and take another look? |
As described in #708, the mobile platform builds every log message, including the string interpolation, before the logger checks its level. Logging therefore costs CPU time even with LogLevel.none (the default), which is noticeable with high-frequency notifications.
Log calls now go through a private getter that returns null for LogLevel.none, so the null-aware ?.log(...) call skips building the message entirely.
No public API change: existing code keeps working, and the example app's verbose-logging toggle already covers both levels, so the example needs no update.
Unit tests added for both log levels.
This replaces the earlier approach of making the logger nullable (see the discussion below).