Bug 16357: Use separate Log4Perl logger for each Plack app
authorDavid Cook <dcook@prosentient.com.au>
Fri, 26 Jun 2020 02:25:10 +0000 (02:25 +0000)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Mon, 28 Sep 2020 14:09:10 +0000 (16:09 +0200)
This patch creates separate timestamped Log4Perl loggers
for each Plack app, so that the Intranet, OPAC, and API are logged
to separate files.

To Test:
0) apt-get install libplack-middleware-logwarn-perl
1) Apply "Alternative" patches
2) Copy PLACK block from etc/log4perl.conf to
/etc/koha/sites/kohadev/log4perl.conf and replace __LOG_DIR__ appropriately
3) Copy debian/templates/plack.psgi to /etc/koha/sites/kohadev/plack.psgi
4) Temporarily add 'warn "TEST"' to opac-main.pl and mainpage.pl
5) koha-plack --restart kohadev
6) Go to /cgi-bin/koha/mainpage.pl and /cgi-bin/koha/opac-main.pl
7) Open /var/log/koha/kohadev/plack-opac-error.log and
/var/log/koha/kohadev/plack-intranet-error.log
7) Observe a log line like the following:
[2020/06/22 03:51:23] [WARN] TEST at <SCRIPT and line #>.

Signed-off-by: Arthur Suzuki <arthur.suzuki@biblibre.com>
Signed-off-by: Joonas Kylmälä <joonas.kylmala@helsinki.fi>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
debian/templates/log4perl-site.conf.in
debian/templates/plack.psgi
etc/log4perl.conf

index b893241..16446c2 100644 (file)
@@ -38,10 +38,27 @@ log4perl.appender.SIP.layout=PatternLayout
 log4perl.appender.SIP.layout.ConversionPattern=[%d] [%p] %m %l %n
 log4perl.appender.SIP.utf8=1
 
-log4perl.logger.plack = WARN, PLACK
-log4perl.appender.PLACK=Log::Log4perl::Appender::Screen
-log4perl.appender.PLACK.stderr = 1
-log4perl.appender.PLACK.mode=append
-log4perl.appender.PLACK.layout=PatternLayout
-log4perl.appender.PLACK.layout.ConversionPattern=[%d] [%p] %m
-log4perl.appender.PLACK.utf8=1
+
+log4perl.logger.plack-opac = WARN, PLACKOPAC
+log4perl.appender.PLACKOPAC=Log::Log4perl::Appender::File
+log4perl.appender.PLACKOPAC.filename=__LOG_DIR__/plack-opac-error.log
+log4perl.appender.PLACKOPAC.mode=append
+log4perl.appender.PLACKOPAC.layout=PatternLayout
+log4perl.appender.PLACKOPAC.layout.ConversionPattern=[%d] [%p] %m
+log4perl.appender.PLACKOPAC.utf8=1
+
+log4perl.logger.plack-api = WARN, PLACKAPI
+log4perl.appender.PLACKAPI=Log::Log4perl::Appender::File
+log4perl.appender.PLACKAPI.filename=__LOG_DIR__/plack-api-error.log
+log4perl.appender.PLACKAPI.mode=append
+log4perl.appender.PLACKAPI.layout=PatternLayout
+log4perl.appender.PLACKAPI.layout.ConversionPattern=[%d] [%p] %m
+log4perl.appender.PLACKAPI.utf8=1
+
+log4perl.logger.plack-intranet = WARN, PLACKINTRANET
+log4perl.appender.PLACKINTRANET=Log::Log4perl::Appender::File
+log4perl.appender.PLACKINTRANET.filename=__LOG_DIR__/plack-intranet-error.log
+log4perl.appender.PLACKINTRANET.mode=append
+log4perl.appender.PLACKINTRANET.layout=PatternLayout
+log4perl.appender.PLACKINTRANET.layout.ConversionPattern=[%d] [%p] %m
+log4perl.appender.PLACKINTRANET.utf8=1
index c06ff4b..32d1794 100644 (file)
@@ -71,15 +71,24 @@ Koha::Logger->get;
 builder {
     enable "ReverseProxy";
     enable "Plack::Middleware::Static";
-    enable "Log4perl", category => "plack";
-    enable "LogWarn";
 
     # + is required so Plack doesn't try to prefix Plack::Middleware::
     enable "+Koha::Middleware::SetEnv";
     enable "+Koha::Middleware::RealIP";
 
-    mount '/opac'          => $opac;
-    mount '/intranet'      => $intranet;
-    mount '/api/v1/app.pl' => $apiv1;
-
+    mount '/opac'          => builder {
+        enable 'Log4perl', category => 'plack-opac';
+        enable 'LogWarn';
+        $opac;
+    };
+    mount '/intranet'      => builder {
+        enable 'Log4perl', category => 'plack-intranet';
+        enable 'LogWarn';
+        $intranet;
+    };
+    mount '/api/v1/app.pl' => builder {
+        enable 'Log4perl', category => 'plack-api';
+        enable 'LogWarn';
+        $apiv1;
+    };
 };
index b893241..16446c2 100644 (file)
@@ -38,10 +38,27 @@ log4perl.appender.SIP.layout=PatternLayout
 log4perl.appender.SIP.layout.ConversionPattern=[%d] [%p] %m %l %n
 log4perl.appender.SIP.utf8=1
 
-log4perl.logger.plack = WARN, PLACK
-log4perl.appender.PLACK=Log::Log4perl::Appender::Screen
-log4perl.appender.PLACK.stderr = 1
-log4perl.appender.PLACK.mode=append
-log4perl.appender.PLACK.layout=PatternLayout
-log4perl.appender.PLACK.layout.ConversionPattern=[%d] [%p] %m
-log4perl.appender.PLACK.utf8=1
+
+log4perl.logger.plack-opac = WARN, PLACKOPAC
+log4perl.appender.PLACKOPAC=Log::Log4perl::Appender::File
+log4perl.appender.PLACKOPAC.filename=__LOG_DIR__/plack-opac-error.log
+log4perl.appender.PLACKOPAC.mode=append
+log4perl.appender.PLACKOPAC.layout=PatternLayout
+log4perl.appender.PLACKOPAC.layout.ConversionPattern=[%d] [%p] %m
+log4perl.appender.PLACKOPAC.utf8=1
+
+log4perl.logger.plack-api = WARN, PLACKAPI
+log4perl.appender.PLACKAPI=Log::Log4perl::Appender::File
+log4perl.appender.PLACKAPI.filename=__LOG_DIR__/plack-api-error.log
+log4perl.appender.PLACKAPI.mode=append
+log4perl.appender.PLACKAPI.layout=PatternLayout
+log4perl.appender.PLACKAPI.layout.ConversionPattern=[%d] [%p] %m
+log4perl.appender.PLACKAPI.utf8=1
+
+log4perl.logger.plack-intranet = WARN, PLACKINTRANET
+log4perl.appender.PLACKINTRANET=Log::Log4perl::Appender::File
+log4perl.appender.PLACKINTRANET.filename=__LOG_DIR__/plack-intranet-error.log
+log4perl.appender.PLACKINTRANET.mode=append
+log4perl.appender.PLACKINTRANET.layout=PatternLayout
+log4perl.appender.PLACKINTRANET.layout.ConversionPattern=[%d] [%p] %m
+log4perl.appender.PLACKINTRANET.utf8=1