Browse Source

Bug 16357: Use separate Log4Perl logger for each Plack app

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>
20.11.x
David Cook 2 years ago
committed by Jonathan Druart
parent
commit
ef021268bb
  1. 31
      debian/templates/log4perl-site.conf.in
  2. 21
      debian/templates/plack.psgi
  3. 31
      etc/log4perl.conf

31
debian/templates/log4perl-site.conf.in

@ -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

21
debian/templates/plack.psgi

@ -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;
};
};

31
etc/log4perl.conf

@ -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

Loading…
Cancel
Save