Logging in Joomla platform 11 JLog

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-18 16:57:47

问题


I'm playing with the new Joomla 1.7 system built on the Joomla platform 11-- and all my logging code from earlier versions of Joomla no longer work (they appear to be writing log entries but with improper syntax, so the messages are blank).

Does anyone know the proper syntax for the new version of JLog? Here's my existing code--

$log = &JLog::getInstance('test.log.php');
$log->addEntry(array('COMMENT' => 'A test Logging message'));

This creates the log file, but the actual log entry looks like this:

#<?php die('Forbidden.'); ?>
#Date: 2011-08-08 16:59:42 UTC
#Software: Joomla Platform 11.1 Stable+Modified [ Ember ] 01-Jun-2011 06:00 GMT

#Fields: date   time    priority    clientip    category    message
2011-08-08  16:59:42    INFO    127.0.0.1   -

I've searched the Joomla docs and the web and found no examples of how to use this class.

Thanks!


回答1:


Yes, the logging changed a bit indeed in Joomla 1.7:

// Include the JLog class.
jimport('joomla.log.log');

// Add the logger.
JLog::addLogger(
     // Pass an array of configuration options
    array(
            // Set the name of the log file
            'text_file' => 'test.log.php',
            // (optional) you can change the directory
            'text_file_path' => 'somewhere/logs'
     )
);

// start logging...
JLog::add('Starting to log');



回答2:


@hbit thx a lot..I fixed like this and it work..

but I created as function..

<?php 
function logWrite($level, $values, $file='%s.php',$path='',$showOnTop=0,
   $option='',$component=''){
/****
jlog Joomla 3.4
created by:gundambison (2015.04.26). 
THX: hbit@stackoverflow
****/
    jimport('joomla.log.log'); 
    $level=strtoupper($level);  
//You can change this com_name
    $component= $component==''? 'com_gundambison': $component;
    $date= date("Ymd");
    $filename= sprintf($file, $date);
    $format= $option=='' ?"{TIME}\t{CLIENTIP}\t{CATEGORY}\t{MESSAGE}": $option;

// create options and text
    $txt = is_array($values)? json_encode($values): $values;
    $options = array('text_file' => $filename,'text_entry_format'=>$format );
    $options['text_file_path']=$path==''?'logs': $path; 
    JLog::addLogger ($options);
/*
if you want the error to show in your page. 
*/  
    if($showOnTop==1){
        JLog::add("$level\t$txt");
    }else{ 
        JLog::add("$level\t$txt",$level,$component);
    }
}
/****
result:
  14:28:39  ::1 com_whatever    ALERT   task:error
****/
?>

Hope this Help



来源:https://stackoverflow.com/questions/7586142/logging-in-joomla-platform-11-jlog

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!