Add `passage_default_tracer` compiler option
diff --git a/README.md b/README.md
index 0c187dc..8938c9f 100644
--- a/README.md
+++ b/README.md
@@ -65,6 +65,7 @@
 -module(example).
 
 -compile({parse_transform, passage_transform}). % Enables `passage_transform'
+-compile({passage_default_tracer, "foo_tracer"}). % Specifies the default tracer (optional)
 
 -passage_trace([{tags, #{foo => "bar", size => "byte_size(Bin)"}}]).
 -spec foo(binary()) -> binary().
diff --git a/src/passage_transform.erl b/src/passage_transform.erl
index 1a129b5..80dc844 100644
--- a/src/passage_transform.erl
+++ b/src/passage_transform.erl
@@ -12,6 +12,7 @@
 %% -module(example).
 %%
 %% -compile({parse_transform, passage_transform}). % Enables `passage_transform'
+%% -compile({passage_default_tracer, "foo_tracer"}). % Specifies the default tracer (optional)
 %%
 %% -passage_trace([{tags, #{foo => "bar", size => "byte_size(Bin)"}}]).
 %% -spec foo(binary()) -> binary().
@@ -127,6 +128,7 @@
           application :: atom(),
           module      :: module(),
           function    :: atom(),
+          default_tracer :: expr_string() | undefined,
 
           trace   = false :: boolean(), % if `true' the next function will be traced
 
@@ -145,10 +147,13 @@
 -spec parse_transform(AbstractForms, list()) -> AbstractForms when
       AbstractForms :: [term()].
 parse_transform(AbstractForms, CompileOptions) ->
-    State = #state{
-             application = guess_application(AbstractForms, CompileOptions),
-             module      = get_module(AbstractForms)
-            },
+    DefaultTracer = proplists:get_value(passage_default_tracer, CompileOptions),
+    State =
+        #state{
+           application    = guess_application(AbstractForms, CompileOptions),
+           module         = get_module(AbstractForms),
+           default_tracer = DefaultTracer
+          },
     walk_forms(AbstractForms, State).
 
 %%------------------------------------------------------------------------------
@@ -160,9 +165,10 @@
         lists:foldl(
           fun ({attribute, _, passage_trace, Options}, {State0, Acc}) ->
                   Tracer =
-                      case lists:keyfind(tracer, 1, Options) of
-                          false   -> error;
-                          {_, Id} -> {ok, Id}
+                      case {lists:keyfind(tracer, 1, Options), State#state.default_tracer} of
+                          {false, undefined}     -> error;
+                          {false, DefaultTracer} -> {ok, DefaultTracer};
+                          {{_, Tracer0}, _}      -> {ok, Tracer0}
                       end,
                   State1 =
                       State0#state{