There's always a question of what this setting would actually mean - should it 
affect logging from modules that belong to that application or should it affect 
logging from processes belonging to that application. If the later, it's 
already possible with a custom logger backend by leveraging the group leader 
mechanism and abusing OTP internals a little bit.

Each log has the pid of the originating process - using 
:application.get_application(pid) one can obtain the application where this 
process runs. The backend can dispatch the log based on the configuration and 
only log messages from some of the applications.

Michał.

On 7 Dec 2017, 20:01 +0100, Isaac Whitfield <[email protected]>, wrote:
> This is based on previous conversation in 
> https://groups.google.com/d/msg/elixir-lang-core/C5-ixZVau3U/Gkb4PyOOAQAJ, 
> but this thread proposes an actual solution which I believe will benefit 
> everyone.
>
> The Logger in Elixir is widely used due to being in the standard library, but 
> misses out on a few key use cases that are familiar for developers coming 
> from other languages. For one, I believe it's time to add functionality to 
> suppress logs on a per-application basis. As the application is known to the 
> logging macros it can easily filter out at compile time. This can also be a 
> backwards-compatible option inside the Logger configuration to override the 
> default log level on a per application basis:
>
>
> config :logger, :my_logger,
>   level: :info,
>   applications: [
>     library1: :debug
>   ]
>
>
> This allows developers to allow logs to be noisier for specific applications 
> (such as their own), without being swamped with noise from other 
> applications. The :applications key will just override the default level 
> provided in the :level key. If the :applications key is not ideal, we can 
> name it something else (:apps, :override, etc). We could even just combine 
> the two in :levels and use a :default for the default level.
>
> In addition to these changes, I propose that a new logging level be added 
> which is lower than the default log level of :debug, with the intent that all 
> developers log to this unless there is explicit reason to have their logs 
> seen by default. The combination of this and the above :applications key 
> allows developers to easily turn on logs from applications they're interested 
> in at the time. It allows the application developer to decide what is 
> important enough for another developer to see, rather than the developer 
> having to (typically) guess. I propose that this new logging level should be 
> named any of :trace, :verbose or :quiet (with :trace being preferred for 
> brevity/familiarity).
>
> There are many other languages which encourage this style of logging. Here 
> are a few I know of:
>
> - Node.js has the "debug" package, which is widely popular as it allows users 
> to opt-in to seeing logs from specific namespaces (which roughly translates 
> to OTP applications in our use case).
> - Java has SLF4J which hides debug logs by default, allowing you to opt in on 
> package or class level (also hugely popular).
> - Rust's official logging framework defaults to actually hiding all logging, 
> making you explicitly ask to see logs (of any kind).
>
> The interesting thing with the packages from Node.s/Java is that they're 
> libraries and not in the standard library; they evolved because of the 
> standard logging missing this stuff (although to be fair, Node.js only has 
> console). As the Logger is so widely used in Elixir, it feels that we're 
> already at the point where this should be supported. Making this an external 
> library in Elixir would be wasted effort as we would then have logging from 
> different sources with different behaviour, thus lowering the utility. I 
> think that including this support in Logger will make logging feel more 
> familiar to developers coming from the languages above, without making it 
> unfamiliar to (e.g.) Ruby developers where the behaviour matches what Elixir 
> currently has.
>
> I appreciate any support and/or suggestions with this. I feel strongly about 
> not having a "quiet" log level, as it causes a very painful balance for a 
> library developer when determining how verbose to be with logging.
>
> Thanks in advance for all replies, feel free to ask questions!
> IW
> --
> You received this message because you are subscribed to the Google Groups 
> "elixir-lang-core" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/elixir-lang-core/606029ea-9855-44c6-ba94-69113ffed45c%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/a036472f-0808-475b-9301-35c3e1043682%40Spark.
For more options, visit https://groups.google.com/d/optout.

Reply via email to