EctoTrailer
- 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
- Add
ecto_trailer
to your list of dependencies inmix.exs
:
def deps do
[{:ecto_trailer, "~> 1.0"}]
end
- Add a migration that creates
audit_log
table topriv/repo/migrations
folder:
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
- Use
EctoTrailer
in your repo:
defmodule MyApp.Repo do
use Ecto.Repo, otp_app: :my_app
use EctoTrailer
end
- Configure table name which is used to store audit log (in
config.ex
):
config :ecto_trailer, table_name: "audit_log", redacted_fields: [:password, :token]
- Use logging functions instead of defaults. See
EctoTrailer
module docs.
Docs
The docs can be found at https://hexdocs.pm/ecto_trailer.