问题
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