Bug 25493: Make ->unhandled_exception use Koha::Logger
authorTomas Cohen Arazi <tomascohen@theke.io>
Wed, 13 May 2020 20:17:21 +0000 (17:17 -0300)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Tue, 19 May 2020 14:20:43 +0000 (15:20 +0100)
To test:
1. Edit the Koha/REST/V1/Cities.pm 'list' method adding
   die("Nada"); before the render step.
2. Restart plack and try the endpoint
=> SUCCESS: The message is generic, but you see something is
logged in /var/log/koha/kohadev/api-error.log
3. Change die("Nada"); for a real exception like:

    use Koha::Exceptions;
    Koha::Exceptions::DuplicateObject->throw("Nada");
4. Repeat 2.
=> SUCCESS: The message is generic, but a meaningful text is added to
the logs.
5. Point your browser to the /api/v1/hola route from your dev
   environment
=> FAIL: Wow, such a weird error
6. Apply this patch
7. Restart plack and repeat 2, 3 and 4
=> SUCCESS: No behaviour change
8. Repeat 5
=> SUCCESS: The regular Mojolicious 404 weird page
9. Sign off :-D

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Koha/REST/Plugin/Exceptions.pm
Koha/REST/V1.pm

index 9e5c5e5..e9be043 100644 (file)
@@ -69,7 +69,8 @@ sub register {
 
             my $message = "$method $path: unhandled exception $type\<\<$exception_string\>\>";
 
-            $c->app->log->error("$message");
+            my $logger = Koha::Logger->get({ interface => 'api' });
+            $logger->error("$message");
 
             $c->render(
                 status  => 500,
index 680b52c..af6bc88 100644 (file)
@@ -40,8 +40,6 @@ Overloaded Mojolicious->startup method. It is called at application startup.
 sub startup {
     my $self = shift;
 
-    $self->log( Koha::Logger->get({ interface => 'api' }) );
-
     $self->hook(
         before_dispatch => sub {
             my $c = shift;
@@ -63,7 +61,6 @@ sub startup {
     $self->types->type( mij     => 'application/marc-in-json' );
     $self->types->type( marc    => 'application/marc' );
 
-
     my $secret_passphrase = C4::Context->config('api_secret_passphrase');
     if ($secret_passphrase) {
         $self->secrets([$secret_passphrase]);