scoper/README.md
Andrew Mayorov 87110f5bd7
TD-222: Add CI through GH Actions (#1)
* Get rid of proprietary CI bits
* Sync w/ valitydev/erlang-templates
* Move valitydev/rebar3_thrift_compiler to test profile
* Add CI through GH Actions
* Fix README
* Work around xref missing optional deps
2022-07-13 19:42:00 +03:00

1.7 KiB

scoper

Log metadata scoping Erlang library.

About

From Urban Dictionary:

Scoper - another word for spastic. Came into use when the Spastic's Society changed it's name to Scope.

You Scoper!
You're such a Scoper!
Scoooper!

Usage

  • Scope log metadata along the process call stack, wrapping functions in scoper:scope/2,3. Scope name should be an atom, metadata is a map with atom keys. The types:

    -type key()   :: atom().
    -type value() :: any().
    -type meta()  :: #{key() => value()}.
    -type scope() :: key().
    
  • Add/remove scope metadata via scoper:add_meta/1 and scoper:remove_meta/1

  • Use lager or just process dictionary (by default) as metadata storage.

  • Implement your own storage as scoper_storage behaviour. Metadata storage is configured via application environment variable storage, which should name the module implementing scoper_storage behaviour. E.g.:

    {scoper, [
        {storage, scoper_storage_lager}
    ]}.
    
  • Enjoy tailored scoper_woody_event_handler:

    %% woody client or server config
    event_handler => scoper_woody_event_handler,
    

    Scope names for woody client and server are: rpc.client and rpc.server.

Note, if using lager metadata storage or/and woody event handler make sure to properly setup corresponding applications in your app.src file, since they are optional for scoper and not configured as it's application dependencies.