RSS Git Download  Clone
Raw Blame History
package App::LogAnyAdapter;

# from ChatGPT session - see documents/LAA-ChatGPT.txt

# this is from ChatGPT session but function works OK without it:
# use Dancer2 ();          # load but don’t import the DSL
use App::Class;
use Data::Printer;
use Log::Any::Adapter;

sub init {
    Log::Any::Adapter->set(
        Capture =>
            min_level => 'debug',
            to => sub ($method, $self, $format, @params) {
                my $msg = @params ? sprintf($format, @params) : $format;
                # Find the first registered Dancer2 app, or If multiple D2 apps
                # in one process, filter `Dancer2->runner->apps` by app name
                my ($app) = @{ Dancer2->runner->apps } or return;
                # Skip Log::Any frames so caller points to your model code
                my (undef, $file, $line) = caller(3);

                $app->logger_engine->log(
                    $method => $msg,
                    caller  => [$file, $line],
                );
            },
    );
}

1;