What cannot be runtime config?

It is more like reading from ETS AFAIK. That is why it is not the best performance-wise when used in environment that need to be as fast as possible (like logger calls).

You cannot do stuff like:

config :kernel, :logger, [
  # …
]

In your config/config.exs nor in config/runtime.exs as when these files are evaluated by Mix kernel application is already started and running. This mean that you cannot easily configure logger in development that will work from the beginning of the VM lifetime (like for example SASL startup messages).

Let just say, that this isn’t very popular approach in Elixir development to use Erlang’s logger to full extent, but with Elixir 1.11 it can became more and more feasible to do so, as Elixir backends do not have simple access to structured logging (it will always be translated to plain string) nor to all log levels (these have access to “basics” - debug/info/warn/error, while Elixir 1.11 supports all 7 syslog levels). There are PRs to OTP to improve that, but it will take some time before that functionality will be available in Elixir.