# EasyErrorLogger
Makes logging of caught, rescued and unmatched errors easier.
In Elixir, the way to get beatiful error messages with a well-formatted stack trace
isn't as straightforward as in other languages, where a single line is often enough
to format the error message, the stack trace and also print it to the console.
Usually, you'd have to do something like this:
```elixir
try do
handle_foo!()
catch
e ->
formatted = Exception.format(:error, e, __STACKTRACE__)
Logger.error(["I really tried, but this error occurred:\n", e])
end
```
which is hard to remember. In EasyErrorLogger, it's as simple as this:
```elixir
# top of module
import ErrorLogger
try do
handle_foo!()
catch
e -> log_message_and_error("I really tried, but this error occurred:", e)
end
```
This results in the following log message:
```
[error] I really tried, but this error occurred:
** (TheThrownError) Something went wrong
(elixir) lib/foo_lib/foo.ex:10 Foo.handle_foo!/0
(elixir) lib/application.ex:18 MyApplication.start/2
```
In this single line, EasyErrorLogger has figured out that it can get a stacktrace
from `__STACKTRACE__`, which is not possible outside of `catch` or `rescue` clauses.
This means that the same macro can be used for errors that were received from an error
tuple:
```elixir
case handle_foo() do
:ok -> :ok
{:error, error} -> log_message_and_error("This didn't work:", error)
end
```
Note that this way of logging the error message will not include a stack trace. This might
be adressed in a future update.
## Installation
The package can be installed by adding `easy_error_logger` to your list
of dependencies in `mix.exs`:
```elixir
def deps do
[
{:easy_error_logger, "~> 1.0"}
]
end
```
Documentation can be found at
[https://hexdocs.pm/easy_error_logger](https://hexdocs.pm/easy_error_logger).