This repository has been archived by the owner on Dec 6, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
ezperfloggermonologlogger.php
61 lines (56 loc) · 2.04 KB
/
ezperfloggermonologlogger.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
/**
* Class used to log KPI data via Monolog
*
* @author G. Giunta
* @copyright (C) eZ Systems AS 2012-2014
* @license Licensed under GNU General Public License v2.0. See file license.txt
*/
use Monolog\Logger;
class eZPerfLoggerMonologLogger implements eZPerfLoggerLogger
{
public static function supportedLogMethods()
{
return array( 'monolog' );
}
public static function doLog( $logmethod, array $data, &$output )
{
$log = new Logger( 'ezperflogger' );
// constructor args for the specific handler can be set via ini
/// @todo how to create resources instead?
foreach( eZPerfLoggerINI::variable( 'MonologSettings', 'LogHandlers' ) as $handlerName )
{
$handlerClass = 'Monolog\Handler\\' . $handlerName . "Handler";
if ( eZPerfLoggerINI::hasVariable( 'MonologSettings', 'LogHandler_' . $handlerName ) )
{
$r = new ReflectionClass( $handlerClass );
$handler = $r->newInstanceArgs( eZPerfLoggerINI::variable( 'MonologSettings', 'LogHandler_' . $handlerName ) );
}
else
{
$handler = new $handlerClass();
}
$log->pushHandler( $handler );
}
// the default severity level: taken from config file
$level = (int)eZPerfLoggerINI::variable( 'MonologSettings', 'SeverityLevel' );
// either coalesce messages or not: taken from config file
if ( eZPerfLoggerINI::variable( 'MonologSettings', 'Coalescevariables' ) == 'enabled' )
{
/// @todo allow via ini file the specification of custom formatters?
$msg = array();
foreach( $data as $varname => $value )
{
$msg[] = "$varname: $value";
}
$log->addRecord( $level, implode( ', ', $msg ) );
}
else
{
foreach( $data as $varname => $value )
{
$log->addRecord( $level, "$varname: $value" );
}
}
}
}