+1 ... this all seems very reasonable to me. The lower the learning curve to get started the better, and most people have simple logging needs to get started.
On Fri, 6 Jul 2018 at 00:18, Christopher Collins <ch...@runtime.io> wrote: > Hello all, > > My logging obsession continues. I have submitted a giant PR > (https://github.com/apache/mynewt-core/pull/1249) which changes all > existing packages to use the modlog facility rather than directly call > into the `sys/log` API. I think this is the right direction, but it is > a somewhat major change, and I am certainly open to feedback. > > I see two benefits of this change: > > * For simple logging to the console, apps don't need to define and > register a log. Just use `MODLOG_DFLT` to log a message. > > * Most packages don't need to define and expose a log object, and the > application doesn't need to register it. The package just writes log > messages to its reserved log module ID. This eliminates the need for > every app to register the `ble_hs_log` and `oc_log` log objects, for > example. > > Here is what I personally would like to see in Mynewt, going forward: > > 1. Every package uses modlog; nothing uses the log API directly > (except for modlog itself :) ). > > 2. Applications that just want to log to the console just use the > `MODLOG_DFLT` macro. This macro writes a printf-style string to the > "default" module, which routes to the console unless remapped. > > 3. If a library needs to log messages, it defines a log module syscfg > setting for each module it uses. It is important that syscfg is used > here so that the user can override them in case two packages choose the > same module ID(s). > > 4. Newt adds two new syscfg setting types: > * log_module_owner > * log_module > > `log_module_owner` is used to stake out a unique module ID. If two > `log_module_owner` settings specify the same number, that indicates a > conflict in the module number space, and newt can abort the build with a > meaningful error. > > `log_module` is used when a package wants to log to "someone else's" > module. Newt doesn't complain if one or more `log_module` settings have > the same value as a `log_module_owner` setting. > > A new command would be added to newt to display all assigned log module > IDs in a target. > > All comments welcome. > > Thanks, > Chris >