Skip to content

Commit

Permalink
CRM-11743 - Civi::log() - Add short hand for logging
Browse files Browse the repository at this point in the history
  • Loading branch information
totten committed Sep 17, 2015
1 parent 92a8de7 commit 6e5ad5e
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 2 deletions.
4 changes: 2 additions & 2 deletions CRM/Core/Error.php
Original file line number Diff line number Diff line change
Expand Up @@ -571,11 +571,11 @@ public static function debug_var(
*
*
*/
public static function debug_log_message($message, $out = FALSE, $comp = '') {
public static function debug_log_message($message, $out = FALSE, $comp = '', $priority = NULL) {
$config = CRM_Core_Config::singleton();

$file_log = self::createDebugLogger($comp);
$file_log->log("$message\n");
$file_log->log("$message\n", $priority);

$str = '<p/><code>' . htmlspecialchars($message) . '</code>';
if ($out && CRM_Core_Permission::check('view debug output')) {
Expand Down
68 changes: 68 additions & 0 deletions CRM/Core/Error/Log.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
<?php

/*
+--------------------------------------------------------------------+
| CiviCRM version 4.7 |
+--------------------------------------------------------------------+
| Copyright CiviCRM LLC (c) 2004-2015 |
+--------------------------------------------------------------------+
| This file is a part of CiviCRM. |
| |
| CiviCRM is free software; you can copy, modify, and distribute it |
| under the terms of the GNU Affero General Public License |
| Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
| |
| CiviCRM is distributed in the hope that it will be useful, but |
| WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| See the GNU Affero General Public License for more details. |
| |
| You should have received a copy of the GNU Affero General Public |
| License and the CiviCRM Licensing Exception along |
| with this program; if not, contact CiviCRM LLC |
| at info[AT]civicrm[DOT]org. If you have questions about the |
| GNU Affero General Public License or the licensing of CiviCRM, |
| see the CiviCRM license FAQ at http://civicrm.org/licensing |
+--------------------------------------------------------------------+
*/

/**
* Class CRM_Core_Error_Log
*
* A PSR-3 wrapper for CRM_Core_Error.
*/
class CRM_Core_Error_Log extends \Psr\Log\AbstractLogger {

public function __construct() {
$this->map = array(
\Psr\Log\LogLevel::DEBUG => PEAR_LOG_DEBUG,
\Psr\Log\LogLevel::INFO => PEAR_LOG_INFO,
\Psr\Log\LogLevel::NOTICE => PEAR_LOG_NOTICE,
\Psr\Log\LogLevel::WARNING => PEAR_LOG_WARNING,
\Psr\Log\LogLevel::ERROR => PEAR_LOG_ERR,
\Psr\Log\LogLevel::CRITICAL => PEAR_LOG_CRIT,
\Psr\Log\LogLevel::ALERT => PEAR_LOG_ALERT,
\Psr\Log\LogLevel::EMERGENCY => PEAR_LOG_EMERG,
);
}

/**
* Logs with an arbitrary level.
*
* @param mixed $level
* @param string $message
* @param array $context
*/
public function log($level, $message, array $context = array()) {
// FIXME: This flattens a $context a bit prematurely. When integrating
// with external/CMS logs, we should pass through $context.
if (!empty($context)) {
if (isset($context['exception'])) {
$context['exception'] = CRM_Core_Error::formatTextException($context['exception']);
}
$message .= "\n" . print_r($context, 1);
}
CRM_Core_Error::debug_log_message($message, FALSE, '', $this->map[$level]);
}

}
7 changes: 7 additions & 0 deletions Civi.php
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,13 @@ public static function container() {
return Civi\Core\Container::singleton();
}

/**
* @return \Psr\Log\LoggerInterface
*/
public static function log() {
return Civi\Core\Container::singleton()->get('psr_log');
}

/**
* Fetch a service from the container.
*
Expand Down
2 changes: 2 additions & 0 deletions Civi/Core/Container.php
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,8 @@ public function createContainer() {
))
->setFactoryClass('CRM_Cxn_BAO_Cxn')->setFactoryMethod('createRegistrationClient');

$container->setDefinition('psr_log', new Definition('CRM_Core_Error_Log', array()));

$container->setDefinition('cache.settings', new Definition(
'CRM_Utils_Cache_SqlGroup',
array(
Expand Down

0 comments on commit 6e5ad5e

Please sign in to comment.