# EctoTrailer
[](https://github.com/maxohq/ecto_trailer/actions/workflows/ci.yml)
[](https://hex.pm/packages/ecto_trailer)
[](https://hexdocs.pm/ecto_trailer)
[](https://hex.pm/packages/ecto_trailer)
[](https://github.com/maxohq/ecto_trailer/blob/main/LICENCE)
- Fork from https://github.com/valiot/ecto_trail -> https://github.com/Nebo15/ecto_trail
- renamed, so we can release an updated package on Hex.pm
EctoTrailer allows to store changeset changes into a separate `audit_log` table.
## Installation and usage
1. Add `ecto_trailer` to your list of dependencies in `mix.exs`:
```elixir
def deps do
[{:ecto_trailer, "~> 1.0"}]
end
```
2. Add a migration that creates `audit_log` table to `priv/repo/migrations` folder:
```elixir
defmodule EctoTrailer.TestRepo.Migrations.CreateAuditLogTable do
@moduledoc false
use Ecto.Migration
@table_name String.to_atom(Application.compile_env(:ecto_trailer, :table_name, "audit_log"))
def change(table_name \\ @table_name) do
EctoTrailChangeEnum.create_type
create table(table_name) do
add :actor_id, :string, null: false
add :resource, :string, null: false
add :resource_id, :string, null: false
add :changeset, :map, null: false
add(:change_type, :change)
timestamps([type: :utc_datetime, updated_at: false])
end
end
end
```
4. Use `EctoTrailer` in your repo:
```elixir
defmodule MyApp.Repo do
use Ecto.Repo, otp_app: :my_app
use EctoTrailer
end
```
5. Configure table name which is used to store audit log (in `config.ex`):
```elixir
config :ecto_trailer, table_name: "audit_log", redacted_fields: [:password, :token]
```
6. Use logging functions instead of defaults. See `EctoTrailer` module docs.
## Docs
The docs can be found at [https://hexdocs.pm/ecto_trailer](https://hexdocs.pm/ecto_trailer).