I have an Elixir application running in a kubernetes pod, it uses LoggerJSON
to send JSON formatted logs to standard output - that works fine.
When I use kubectl exec to access that pod and run bin/my_app remote
the IEx session sends logs to the container standard output about typos that I’ve made etc, but if I require Logger
and then Logger.error("Hello from IEx")
, that appears in the IEx console but does not go to the container standard output.
Task.async(fn -> Logger.error("Hello from IEx") end)
goes to the IEx console.
Task.Supervisor.async_nolink(MyTaskSupervisor, fn -> Logger.error("Hello from IEx") end)
goes to the container stdout.
How does one direct logs created from IEx to the application logger?
Using Task.Supervisor.async_nolink/2
is my workaround to experiment with creating logs and seeing how they look at the other end of log processing, but it would be nice to understand more about how standard_io and logging is handled and propagrated through the system.