40 private $_monologLogger = null;
41 private $_level = Logger::ERROR;
43 private static $_defaultLevel = Logger::ERROR;
44 private static $_logTarget =
'';
45 private static $_levels = array();
53 if (strlen($configFile) > 0) {
54 self::configure($configFile);
55 if (!$this->isStreamTarget(self::$_logTarget)) {
57 self::$_logTarget = $fileUtil->realpath(WCMF_BASE.self::$_logTarget).
'/';
58 $fileUtil->mkdirRec(self::$_logTarget);
61 $level = isset(self::$_levels[$name]) ? self::$_levels[$name] : self::$_defaultLevel;
62 $this->_level = $level;
64 $output =
"[%datetime%] %level_name%: %channel%:%extra.line%: %message%\n";
65 $formatter =
new LineFormatter($output, null,
true);
66 $processor =
new IntrospectionProcessor($level, array(__CLASS__));
67 if ($this->isStreamTarget(self::$_logTarget)) {
68 $handler =
new StreamHandler(self::$_logTarget, $level);
71 $handler =
new RotatingFileHandler(self::$_logTarget.
'.log', 0, $level);
72 $handler->setFilenameFormat(
'{date}',
'Y-m-d');
74 $handler->setFormatter($formatter);
75 $handler->pushProcessor($processor);
77 $this->_monologLogger =
new Logger($name, array($handler));
83 public function debug($message) {
84 $this->_monologLogger->addDebug($this->prepareMessage($message));
90 public function info($message) {
91 $this->_monologLogger->addInfo($this->prepareMessage($message));
97 public function warn($message) {
98 $this->_monologLogger->addWarning($this->prepareMessage($message));
105 $this->_monologLogger->addError($this->prepareMessage($message));
112 $this->_monologLogger->addCritical($this->prepareMessage($message));
119 return $this->_level <= Logger::DEBUG;
126 return $this->_level <= Logger::INFO;
133 return $this->_level <= Logger::WARNING;
140 return $this->_level <= Logger::ERROR;
147 return $this->_level <= Logger::CRITICAL;
161 private function configure($configFile) {
162 if (!file_exists($configFile)) {
165 $config = parse_ini_file($configFile,
true);
168 if (isset($config[self::ROOT_SECTION_NAME])) {
169 $rootConfig = $config[self::ROOT_SECTION_NAME];
170 self::$_defaultLevel = isset($rootConfig[
'level']) ?
171 constant(
'Monolog\Logger::'.strtoupper($rootConfig[
'level'])) :
172 self::$_defaultLevel;
173 self::$_logTarget = isset($rootConfig[
'target']) ?
174 $rootConfig[
'target'] : WCMF_BASE.self::$_logTarget;
178 self::$_levels = isset($config[self::LOGGER_SECTION_NAME]) ?
179 $config[self::LOGGER_SECTION_NAME] : array();
180 foreach (self::$_levels as $key => $val) {
181 self::$_levels[$key] = constant(
'Monolog\Logger::'.strtoupper($val));
190 private function prepareMessage($message) {
199 private function isStreamTarget($target) {
200 return preg_match(
'/^.+?:\/\//', $target);
__construct($name, $configFile='')
Constructor.
Interface for logger implementations.
const LOGGER_SECTION_NAME
FileUtil provides basic support for file functionality like HTTP file upload.
MonologFileLogger is a wrapper for the Monolog library that logs to files.
ConfigurationException signals an exception in the configuration.
static getDump($var)
Get the dump of a variable as string.