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_trailerto your list of dependencies inmix.exs:
def deps do
[{:ecto_trailer, "~> 1.0"}]
end-
Add a migration that creates
audit_logtable topriv/repo/migrationsfolder:
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
EctoTrailerin 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
EctoTrailermodule docs.
Docs
The docs can be found at https://hexdocs.pm/ecto_trailer.