Lumberjack - log viewer for Elixir and Erlang

I have created simple log viewer for your applications. It is not yet published on Hex as it still needs a little bit polishing and documentation, but I thought that it can be interesting for some of you.

Example of web UI:

Repo:

While this has some common ground with upcoming Phoenix Dashboard there are some crucial differences:

  • This one do not require Phoenix at all. It is implemented in pure Plug and uses SSE instead of web sockets
  • This focus only on logs, without any other stuff
  • This allows to show logs from different places as well. Currently supported sources are:
    • Erlang logger (which is also used by Elixir Logger)
    • Socket (for now UDP only)
    • Filesystem (quite buggy, but in progress)

The external sources can be useful for example if you want to check out logs of your DB together with your application logs for quicker bughunt or performance monitoring.


For now it do not show metadata anywhere, but the plan is to have a way to view more informations about that log message.

Future improvements:

  • Filters for removing unneeded messages from external sources
  • Parsers to extract informations from the external log sources
  • Search in the webUI
  • Maybe add persistence to webUI
  • Fix bugs and make the FS source more robust
12 Likes

Added few new features:

  • Hide source by default, as most of the users will probably use only one source so it is needless clutter
  • Light and dark theme support
  • Messages on critical and above levels are now on highlighted background

4 Likes

looking great! - could also be of great use on a Nerves device outputting the Ringlogger…

1 Like

I think I could work on migrating RingLogger to the Erlang Logger and then it indeed would be nice to have, as this would allow me to have persistence layer within the application.

1 Like

Someone created topic Structured logging on localhost which give me some energy to revive it a little.

For now on master there is version with updated version dependency for file_system which allows it to build with new Phoenix releases.

Also I am working on colours that will be a little bit more readable as well as with adding colouring to metadata view.

In addition to that I am planning on adding limiter that will drop old DOM nodes if there is more than N entries to reduce memory consumption when there is a lot of logs.

I am also planning on dropping plug_cowboy dependency and instead force the user to setup HTTP server when needed.

8 Likes

Very nice, thanks for updating it!

Lately reading error messages from phoenix has become a pretty substantial problem for me. This solution might provide the perfect experience for dev environments where you don’t want to run a series of log collection and processing services.

1 Like

Looking forward to see this change!

And of course: Thx for your work

I feel a little stupid, but what do I need to do to make it work? I have added it to my dependencies and I have updated my config with the sources. Should that be enough, or do I need to do any additional steps? Where can I see the UI in your screenshots?

If you set the port for the application, then it is available under that port. So with:

config :lumberjack, :port, 6666

You go to http://localhost:6666 to view the UI.

Unfortunately, I can’t get it to work. I can’t see any indications any lumberjack code is running. No logs, and nothing at http://localhost:6666.