Я использую простую регистрацию в mojolicious приложении. Я хочу расширить ведение журнала некоторой информацией. Это может быть IP-адрес, идентификатор транзакции или идентификатор сеанса. Что я делаю раньше, так это пишу для каждого уровня журнала один помощник следующим образом:
$self->helper( 'info' => sub {
my $self=shift;
my $msg=shift;
my $ip=$self->tx->remote_address;
$self->app->log->info("[$ip] $msg");
});
...
$self->info("Login failed of user $user.");
Я хотел бы изменить формат вывода журнала, чтобы я мог использовать общую функцию журнала, которая будет добавлять любые дополнительные значения, которые мне нужны, и без большого количества помощников для каждого уровня журнала. Основной вызов:
$self->app->log->info("Login failed of user $user.");
также должен давать записи журнала, такие как
[Sun Jun 8 11:09:12 2014] [info] [127.0.0.1] Login failed of user Tim.
Я пытаюсь сделать это с помощью формата журнала изменений, но все, что я делаю, игнорируется.
$self->app->log->format(sub {
my ($time, $level, @lines) = @_;
return "[$time] [$level] [$self->tx->remote_address] @lines.\n";
});
Я знаю, что есть Log4Perl в сочетании с Mojolicious. Но я хочу, чтобы это было максимально просто.