|
Lines 112-170
sub AUTOLOAD {
Link Here
|
| 112 |
|
112 |
|
| 113 |
sub DESTROY { } |
113 |
sub DESTROY { } |
| 114 |
|
114 |
|
| 115 |
=head2 _init, _check_conf and _recheck_logfile |
115 |
=head2 _init, _recheck_logfile |
| 116 |
|
116 |
|
| 117 |
=cut |
117 |
=cut |
| 118 |
|
118 |
|
| 119 |
sub _init { |
119 |
sub _init { |
| 120 |
my $rv; |
|
|
| 121 |
if ( exists $ENV{"LOG4PERL_CONF"} and $ENV{'LOG4PERL_CONF'} and -s $ENV{"LOG4PERL_CONF"} ) { |
| 122 |
|
| 123 |
# Check for web server level configuration first |
| 124 |
# In this case we ASSUME that you correctly arranged logfile |
| 125 |
# permissions. If not, log4perl will crash on you. |
| 126 |
# We will not parse apache files here. |
| 127 |
Log::Log4perl->init_once( $ENV{"LOG4PERL_CONF"} ); |
| 128 |
} |
| 129 |
elsif ( C4::Context->config("log4perl_conf") ) { |
| 130 |
|
| 131 |
# Now look in the koha conf file. We only check the permissions of |
| 132 |
# the default logfiles. For the rest, we again ASSUME that |
| 133 |
# you arranged file permissions. |
| 134 |
my $conf = C4::Context->config("log4perl_conf"); |
| 135 |
if ( $rv = _check_conf($conf) ) { |
| 136 |
Log::Log4perl->init_once($conf); |
| 137 |
return $rv; |
| 138 |
} |
| 139 |
else { |
| 140 |
return 0; |
| 141 |
} |
| 142 |
} |
| 143 |
else { |
| 144 |
# This means that you do not use log4perl currently. |
| 145 |
# We will not be forcing it. |
| 146 |
return 0; |
| 147 |
} |
| 148 |
return 1; # if we make it here, log4perl did not crash :) |
| 149 |
} |
| 150 |
|
120 |
|
| 151 |
sub _check_conf { # check logfiles in log4perl config (at initialization) |
121 |
my $log4perl_config = |
| 152 |
my $file = shift; |
122 |
exists $ENV{"LOG4PERL_CONF"} |
| 153 |
return if !-r $file; |
123 |
&& $ENV{'LOG4PERL_CONF'} |
| 154 |
open my $fh, '<', $file; |
124 |
&& -s $ENV{"LOG4PERL_CONF"} |
| 155 |
my @lines = <$fh>; |
125 |
# Check for web server level configuration first |
| 156 |
close $fh; |
126 |
# In this case we ASSUME that you correctly arranged logfile |
| 157 |
my @logs; |
127 |
# permissions. If not, log4perl will crash on you. |
| 158 |
foreach my $l (@lines) { |
128 |
? $ENV{"LOG4PERL_CONF"} |
| 159 |
if ( $l =~ /(OPAC|INTRANET)\.filename\s*=\s*(.*)\s*$/i ) { |
129 |
: C4::Context->config("log4perl_conf"); |
| 160 |
|
130 |
|
| 161 |
# we only check the two default logfiles, skipping additional ones |
131 |
# This will explode with the relevant error message if something is wrong in the config file |
| 162 |
return if !-w $2; |
132 |
return Log::Log4perl->init_once($log4perl_config); |
| 163 |
push @logs, $1 . ':' . $2; |
|
|
| 164 |
} |
| 165 |
} |
| 166 |
return if !@logs; # we should find one |
| 167 |
return \@logs; |
| 168 |
} |
133 |
} |
| 169 |
|
134 |
|
| 170 |
sub _recheck_logfile { # recheck saved logfile when logging message |
135 |
sub _recheck_logfile { # recheck saved logfile when logging message |
| 171 |
- |
|
|