Overview

Packages

  • Auth
  • Core
  • Horde
    • Imsp
  • None
  • Notification

Classes

  • Horde
  • Horde_Config
  • Horde_Config_Form
  • Horde_Core_ActiveSync_Connector
  • Horde_Core_ActiveSync_Driver
  • Horde_Core_Ajax_Application
  • Horde_Core_Ajax_Imple
  • Horde_Core_Ajax_Imple_AutoCompleter
  • Horde_Core_Ajax_Imple_Geocoder_Geonames
  • Horde_Core_Ajax_Imple_SpellChecker
  • Horde_Core_Alarm_Handler_Notify
  • Horde_Core_Auth_Application
  • Horde_Core_Auth_Composite
  • Horde_Core_Auth_Ldap
  • Horde_Core_Auth_Msad
  • Horde_Core_Auth_Shibboleth
  • Horde_Core_Auth_Signup_Base
  • Horde_Core_Auth_Signup_Form
  • Horde_Core_Auth_Signup_Null
  • Horde_Core_Auth_Signup_Sql
  • Horde_Core_Auth_Signup_SqlObject
  • Horde_Core_Autoloader_Callback_Mime
  • Horde_Core_Autoloader_Callback_Nls
  • Horde_Core_Block
  • Horde_Core_Block_Collection
  • Horde_Core_Block_Layout
  • Horde_Core_Block_Layout_Manager
  • Horde_Core_Block_Layout_View
  • Horde_Core_Block_Upgrade
  • Horde_Core_Browser
  • Horde_Core_Bundle
  • Horde_Core_Cli
  • Horde_Core_Controller_NotFound
  • Horde_Core_Controller_RequestConfiguration
  • Horde_Core_Controller_RequestMapper
  • Horde_Core_Controller_SettingsFinder
  • Horde_Core_Db_Migration
  • Horde_Core_Factory_ActiveSyncBackend
  • Horde_Core_Factory_ActiveSyncServer
  • Horde_Core_Factory_ActiveSyncState
  • Horde_Core_Factory_Ajax
  • Horde_Core_Factory_Alarm
  • Horde_Core_Factory_Auth
  • Horde_Core_Factory_AuthSignup
  • Horde_Core_Factory_Base
  • Horde_Core_Factory_BlockCollection
  • Horde_Core_Factory_Browser
  • Horde_Core_Factory_Cache
  • Horde_Core_Factory_Crypt
  • Horde_Core_Factory_Data
  • Horde_Core_Factory_Db
  • Horde_Core_Factory_DbBase
  • Horde_Core_Factory_DbPear
  • Horde_Core_Factory_Dns
  • Horde_Core_Factory_Editor
  • Horde_Core_Factory_Facebook
  • Horde_Core_Factory_Group
  • Horde_Core_Factory_History
  • Horde_Core_Factory_HttpClient
  • Horde_Core_Factory_Identity
  • Horde_Core_Factory_Image
  • Horde_Core_Factory_Imple
  • Horde_Core_Factory_Imsp
  • Horde_Core_Factory_ImspAuth
  • Horde_Core_Factory_Injector
  • Horde_Core_Factory_KolabServer
  • Horde_Core_Factory_KolabSession
  • Horde_Core_Factory_KolabStorage
  • Horde_Core_Factory_Ldap
  • Horde_Core_Factory_Lock
  • Horde_Core_Factory_Logger
  • Horde_Core_Factory_LoginTasks
  • Horde_Core_Factory_Mail
  • Horde_Core_Factory_Mapper
  • Horde_Core_Factory_Matcher
  • Horde_Core_Factory_Memcache
  • Horde_Core_Factory_MimeViewer
  • Horde_Core_Factory_Notification
  • Horde_Core_Factory_Perms
  • Horde_Core_Factory_PermsCore
  • Horde_Core_Factory_Prefs
  • Horde_Core_Factory_Request
  • Horde_Core_Factory_Secret
  • Horde_Core_Factory_SessionHandler
  • Horde_Core_Factory_Share
  • Horde_Core_Factory_ShareBase
  • Horde_Core_Factory_Template
  • Horde_Core_Factory_TextFilter
  • Horde_Core_Factory_ThemesCache
  • Horde_Core_Factory_Token
  • Horde_Core_Factory_Tree
  • Horde_Core_Factory_Twitter
  • Horde_Core_Factory_UrlShortener
  • Horde_Core_Factory_Vfs
  • Horde_Core_Factory_View
  • Horde_Core_Factory_Weather
  • Horde_Core_Group_Ldap
  • Horde_Core_Log_Logger
  • Horde_Core_LoginTasks
  • Horde_Core_LoginTasks_Backend_Horde
  • Horde_Core_LoginTasks_SystemTask_Upgrade
  • Horde_Core_Mime_Viewer_Syntaxhighlighter
  • Horde_Core_Mime_Viewer_Vcard
  • Horde_Core_Notification_Event_Status
  • Horde_Core_Notification_Handler_Decorator_Hordelog
  • Horde_Core_Notification_Storage_Session
  • Horde_Core_Perms
  • Horde_Core_Perms_Ui
  • Horde_Core_Prefs_Cache_Session
  • Horde_Core_Prefs_Identity
  • Horde_Core_Prefs_Storage_Configuration
  • Horde_Core_Prefs_Storage_Hooks
  • Horde_Core_Prefs_Storage_Upgrade
  • Horde_Core_Prefs_Ui
  • Horde_Core_Prefs_Ui_Widgets
  • Horde_Core_Share_Driver
  • Horde_Core_Share_FactoryCallback
  • Horde_Core_Sidebar
  • Horde_Core_Text_Filter_Bbcode
  • Horde_Core_Text_Filter_Emails
  • Horde_Core_Text_Filter_Emoticons
  • Horde_Core_Text_Filter_Highlightquotes
  • Horde_Core_Translation
  • Horde_Core_Tree_Html
  • Horde_Core_Tree_Javascript
  • Horde_Core_Tree_Simplehtml
  • Horde_Core_Ui_FlagImage
  • Horde_Core_Ui_JsCalendar
  • Horde_Core_Ui_Language
  • Horde_Core_Ui_Layout
  • Horde_Core_Ui_ModalFormRenderer
  • Horde_Core_Ui_Pager
  • Horde_Core_Ui_Tabs
  • Horde_Core_Ui_TagCloud
  • Horde_Core_Ui_VarRenderer
  • Horde_Core_Ui_VarRenderer_Html
  • Horde_Core_Ui_VarRenderer_TablesetHtml
  • Horde_Core_Ui_Widget
  • Horde_ErrorHandler
  • Horde_Help
  • Horde_Menu
  • Horde_Registry
  • Horde_Registry_Api
  • Horde_Registry_Application
  • Horde_Registry_Caller
  • Horde_Registry_Nlsconfig
  • Horde_Script_Files
  • Horde_Session
  • Horde_Session_Null
  • Horde_Themes
  • Horde_Themes_Cache
  • Horde_Themes_Css
  • Horde_Themes_Element
  • Horde_Themes_Image
  • Horde_Themes_Sound

Exceptions

  • Horde_Exception_HookNotSet
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * This class extends the base Horde_Log_Logger class to ensure that the log
  4:  * entries are consistently generated across the applications and framework
  5:  * libraries.
  6:  *
  7:  * Copyright 2010-2012 Horde LLC (http://www.horde.org/)
  8:  *
  9:  * See the enclosed file COPYING for license information (LGPL). If you
 10:  * did not receive this file, see http://www.horde.org/licenses/lgpl21.
 11:  *
 12:  * @author   Michael Slusarz <slusarz@horde.org>
 13:  * @category Horde
 14:  * @package  Core
 15:  */
 16: class Horde_Core_Log_Logger extends Horde_Log_Logger
 17: {
 18:     /**
 19:      * Logs a message to the global Horde log backend.
 20:      *
 21:      * @param mixed $event     Either a string (log string), an array
 22:      *                         (containing 'level', 'message', and 'timestamp'
 23:      *                         entries) or an object with a getMessage()
 24:      *                         method (e.g. PEAR_Error, Exception,
 25:      *                         ErrorException).
 26:      * @param mixed $priority  The priority of the message. Integers
 27:      *                         correspond to Horde_Log constants. String
 28:      *                         values are auto translated to Horde_Log
 29:      *                         constants.
 30:      * @param array $options   Additional options:
 31:      * <pre>
 32:      * 'file' - (string) The filename to use in the log message.
 33:      * 'line' - (integer) The file line to use in the log message.
 34:      * 'trace' - (integer) The trace level of the original log location.
 35:      * </pre>
 36:      */
 37:     public function log($event, $priority = null, $options = array())
 38:     {
 39:         /* If an array is passed in, assume that the caller knew what they
 40:          * were doing and pass it directly to the log backend. */
 41:         if (is_array($event)) {
 42:             return parent::log($event, constant('Horde_Log::' . $priority));
 43:         }
 44: 
 45:         if ($event instanceof Exception) {
 46:             if (is_null($priority)) {
 47:                 $priority = Horde_Log::ERR;
 48:             }
 49:             $text = $event->getMessage();
 50:             if (!empty($event->details)) {
 51:                 $text .= ' ' . $event->details;
 52:             }
 53:             $trace = array(
 54:                 'file' => $event->getFile(),
 55:                 'line' => $event->getLine()
 56:             );
 57:         } else {
 58:             if ($event instanceof PEAR_Error) {
 59:                 if (is_null($priority)) {
 60:                     $priority = Horde_Log::ERR;
 61:                 }
 62:                 $userinfo = $event->getUserInfo();
 63:                 $text = $event->getMessage();
 64:                 if (!empty($userinfo)) {
 65:                     if (is_array($userinfo)) {
 66:                         $userinfo = @implode(', ', $userinfo);
 67:                     }
 68:                     $text .= ': ' . $userinfo;
 69:                 }
 70:             } elseif (is_object($event)) {
 71:                 $text = strval($event);
 72:                 if (!is_string($text)) {
 73:                     $text = is_callable(array($event, 'getMessage'))
 74:                         ? $event->getMessage()
 75:                         : '';
 76:                 }
 77:             } else {
 78:                 $text = $event;
 79:             }
 80: 
 81:             $trace = debug_backtrace();
 82:             if (isset($options['trace'])) {
 83:                 $frame = $options['trace'] - 1;
 84:             } elseif (count($trace) > 1 &&
 85:                       $trace[1]['class'] == 'Horde_Log_Logger' &&
 86:                       $trace[1]['function'] == '__call') {
 87:                 $frame = 2;
 88:             } else {
 89:                 $frame = 0;
 90:             }
 91:             $trace = $trace[$frame];
 92:         }
 93: 
 94:         if (is_null($priority)) {
 95:             $priority = Horde_Log::INFO;
 96:         } elseif (is_string($priority)) {
 97:             $priority = defined('Horde_Log::' . $priority)
 98:                 ? constant('Horde_Log::' . $priority)
 99:                 : Horde_Log::INFO;
100:         }
101: 
102:         $file = isset($options['file'])
103:             ? $options['file']
104:             : $trace['file'];
105:         $line = isset($options['line'])
106:             ? $options['line']
107:             : $trace['line'];
108: 
109:         $app = isset($GLOBALS['registry'])
110:             ? $GLOBALS['registry']->getApp()
111:             : 'horde';
112: 
113:         $message = ($app ? '[' . $app . '] ' : '') .
114:             $text .
115:             ' [pid ' . getmypid() . ' on line ' . $line . ' of "' . $file . '"]';
116: 
117:         /* Make sure to log in the system's locale and timezone. */
118:         // TODO: Needed?
119:         $locale = setlocale(LC_TIME, 0);
120:         setlocale(LC_TIME, 'C');
121:         $tz = getenv('TZ');
122:         @putenv('TZ');
123: 
124:         $eventob = array(
125:             'level' => $priority,
126:             'message' => $message,
127:         );
128: 
129:         if (!empty($GLOBALS['conf']['log']['time_format'])) {
130:             $eventob['timestamp'] = date($GLOBALS['conf']['log']['time_format']);
131:         }
132: 
133:         parent::log($eventob);
134: 
135:         /* If logging an exception, log the backtrace too. */
136:         if (($event instanceof Exception) &&
137:             class_exists('Horde_Support_Backtrace')) {
138:             parent::log((string)new Horde_Support_Backtrace($event), Horde_Log::DEBUG);
139:         }
140: 
141:         /* Restore original locale and timezone. */
142:         setlocale(LC_TIME, $locale);
143:         if ($tz) {
144:             @putenv('TZ=' . $tz);
145:         }
146:     }
147: 
148: }
149: 
API documentation generated by ApiGen