Tutorial Extension  1.0.0
SellerDeck Extensions - Tutorial Extension
CLogger.php
1 <?php
2 
3 /**
4  * CLogger.php - Logger wrapper class (singleton)
5  *
6  * @package SellerDeck Extensions
7  *
8  * @author Péter Erdődi
9  * @copyright © SellerDeck Ltd 2015. All rights reserved.
10  */
11 
13 
14 use Monolog\Logger;
16 
17 class CLogger
18  {
19 
20  /**
21  * @var object $m_oLogger Logger
22  */
23  private static $m_oLogger = null;
24 
25  /**
26  * @var string $m_sLogRoot LogRoot
27  */
28  private static $m_sLogRoot = "";
29 
30  /**
31  * @var string $m_sChannel Channel
32  */
33  private static $m_sChannel = "default";
34 
35  /**
36  * init - Initializing the Logger
37  *
38  * @access public
39  * @param string $sChannel Channel
40  * @param string $sLogRoot LogRoot
41  * @return void
42  */
43  public static function init($sChannel = "default", $sLogRoot = "")
44  {
45  self::$m_sChannel = $sChannel;
46  self::$m_sLogRoot = $sLogRoot;
47  self::$m_oLogger = new \Monolog\SDELogger($sChannel);
48  $sTraceFilter = \SDExtension\CConfig::get('sdd-configuration.paths.logs.tracefilter', 'W'); // not used yet
49  if (empty($sTraceFilter))
50  {
51  $sTraceFilter = "";
52  }
53  $bDebug = ((int) \SDExtension\CConfig::get('sdd-configuration.paths.logs.debug', 0) > 0);
54  $nLevel = $bDebug ? Logger::DEBUG : Logger::WARNING;
55  self::$m_oLogger->pushHandler(new StreamHandler(self::$m_sLogRoot . "extension.log", $nLevel));
56  self::$m_oLogger->addInfo("------------------- Logger[$sChannel] is ready");
57  }
58 
59  /**
60  * initLogToScreen - Logging to Screen
61  *
62  * @access public
63  * @return void
64  */
65  public static function initLogToScreen($bStream = false)
66  {
67  $sOutputFormat = "[%datetime%] %channel%.%level_name%: %message%";
68  $oFormatter = new \Monolog\Formatter\CSdeLineFormatter($sOutputFormat);
69  //$formatter = new \Monolog\Formatter\HTMLFormatter();
70  if ($bStream)
71  {
72  $oStreamHandler = new \Monolog\Handler\AjaxStreamHandler(\Monolog\Logger::INFO);
73  }
74  else
75  {
76  $oStreamHandler = new \Monolog\Handler\StreamHandler('php://output', \Monolog\Logger::INFO);
77  }
78  $oStreamHandler->setFormatter($oFormatter);
79  self::$m_oLogger->pushHandler($oStreamHandler);
80  }
81 
82  /**
83  * get - Getting Logger object
84  *
85  * @access public
86  * @param $sChannel Channel
87  * @param $sLogRoot LogRoot
88  * @return object Logger
89  */
90  public static function get($sChannel = "default", $sLogRoot = "")
91  {
92  if (self::$m_oLogger == null)
93  {
94  self::init($sChannel, $sLogRoot);
95  }
96  return self::$m_oLogger;
97  }
98 
99  }
100 
101 namespace Monolog;
102 
103 /**
104  * SDELogger - SDE Logger extension class
105  *
106  */
107 class SDELogger extends Logger
108  {
109 
110  /**
111  * addError - Adds a log record at the ERROR level.
112  *
113  * @param string $sMessage The log message
114  * @param array $aContext The log context
115  * @return Boolean Whether the record has been processed
116  */
117  public function addError($sMessage, array $aContext = array())
118  {
119  //
120  // Uncomment this to add debug backtrace
121  // if (empty($aContext)) { $aContext = debug_backtrace(); }
122  //
123  return $this->addRecord(static::ERROR, $sMessage, $aContext);
124  }
125 
126  }
127 
128 namespace Monolog\Formatter;
129 
130 /**
131  * CSdeLineFormatter - SDE LineFormatter class
132  *
133  */
134 class CSdeLineFormatter extends LineFormatter
135  {
136 
137  /**
138  * {@inheritdoc}
139  */
140  public function format(array $aRecord)
141  {
142  $sOutput = parent::format($aRecord);
143  return str_replace('@@br@@', '<br/>', htmlentities(str_replace('<br/>', '@@br@@', $sOutput))) . BR;
144  }
145 
146  }
static init($sChannel="default", $sLogRoot="")
Definition: CLogger.php:43
addError($sMessage, array $aContext=array())
Definition: CLogger.php:117
static initLogToScreen($bStream=false)
Definition: CLogger.php:65
static get($sName=null, $vDefault=[])
Definition: CConfig.php:47