Difference between revisions of "Using JLog"

From Joomla! Documentation

(→‎Logging a specific extension: correction for category parameter)
Line 26: Line 26:
 
             'text_file' => 'com_helloworld.errors.php'
 
             'text_file' => 'com_helloworld.errors.php'
 
         ),
 
         ),
         //Sets all JLog messages to be set to the file
+
         // Sets messages of all log levels to be sent to the file
 
         JLog::ALL,
 
         JLog::ALL,
         //Chooses a category name
+
         // The names of the log categories which should be sent to the file
         'com_helloworld'
+
         array('com_helloworld')
 
     );
 
     );
  
Now remember to change the category when you add a log. Such as in the example below.
+
Now remember to change the category when you add a log message. Such as in the example below.
  
 
     JLog::add(JText::_('JTEXT_ERROR_MESSAGE'), JLog::WARNING, 'com_helloworld');
 
     JLog::add(JText::_('JTEXT_ERROR_MESSAGE'), JLog::WARNING, 'com_helloworld');
  
Note you may wish to combine this with the [[Display error messages and notices]] section to display visable error notifications to users.
+
Note: you may wish to combine this with the [[Display error messages and notices]] section to display visable error notifications to users.
  
 
== Logging specific priorities ==
 
== Logging specific priorities ==

Revision as of 19:27, 6 March 2014

Using JLog can be very useful in components when analysing the performance of custom extensions - or analysing where extensions are giving issues. Note this should be used in tandem with php exceptions - not as a replacement. See Exceptions and Logging in Joomla 1.7 and Joomla Platform 11.1 for more information on this

Calling the class[edit]

To use JLog you need to call the JLog class. Done through the following code:

   jimport('joomla.log.log');

Basic File Logging[edit]

Often you may wish to display an error log message and log to an error file. Joomla allows this natively through the JLog::add function. For example:

   JLog::add(JText::_('JTEXT_ERROR_MESSAGE'), JLog::WARNING, 'jerror');

Adding the category of jerror means that this message will also be displayed to users. To only write to file you can easily drop that parameter and simply use

   JLog::add(JText::_('JTEXT_ERROR_MESSAGE'), JLog::WARNING);

Logging a specific extension[edit]

Sometimes it may be useful to log the errors to a specific file. In this case you can

   JLog::addLogger(
       array(
            //Sets file name
            'text_file' => 'com_helloworld.errors.php'
       ),
       // Sets messages of all log levels to be sent to the file
       JLog::ALL,
       // The names of the log categories which should be sent to the file
       array('com_helloworld')
   );

Now remember to change the category when you add a log message. Such as in the example below.

   JLog::add(JText::_('JTEXT_ERROR_MESSAGE'), JLog::WARNING, 'com_helloworld');

Note: you may wish to combine this with the Display error messages and notices section to display visable error notifications to users.

Logging specific priorities[edit]

You can also add an additional logger to capture only critical and emergency log notifications.

   JLog::addLogger(
       array(
            //Sets file name
            'text_file' => 'com_helloworld.critical_emergency.php'
       ),
       //Sets critical and emergency JLog messages to be set to the file
       JLog::CRITICAL + JLog::EMERGENCY,
       //Chooses a category name
       'com_helloworld'
   );