log->logger_file_path;
if($log_dir[0] != '/' && $log_dir[0] != DIRECTORY_SEPARATOR)
{
$log_dir = PIWIK_USER_PATH . '/' . $log_dir;
}
$this->logToFileFilename = $log_dir . '/' . $logToFileFilename;
$this->fileFormatter = $fileFormatter;
$this->screenFormatter = $screenFormatter;
$this->logToDatabaseTableName = Piwik::prefixTable($logToDatabaseTableName);
$this->logToDatabaseColumnMapping = $logToDatabaseColumnMapping;
}
static public function dump($var)
{
Zend_Registry::get('logger_message')->logEvent(var_export($var, true));
}
function addWriteToFile()
{
Piwik_Common::mkdir(dirname($this->logToFileFilename));
$writerFile = new Zend_Log_Writer_Stream($this->logToFileFilename);
$writerFile->setFormatter( $this->fileFormatter );
$this->addWriter($writerFile);
}
function addWriteToNull()
{
Zend_Loader::loadClass('Zend_Log_Writer_Null');
$this->addWriter( new Zend_Log_Writer_Null );
}
function addWriteToDatabase()
{
$writerDb = new Zend_Log_Writer_Db(
Zend_Registry::get('db'),
$this->logToDatabaseTableName,
$this->logToDatabaseColumnMapping);
$this->addWriter($writerDb);
}
function addWriteToScreen()
{
$writerScreen = new Zend_Log_Writer_Stream('php://output');
$writerScreen->setFormatter( $this->screenFormatter );
$this->addWriter($writerScreen);
}
public function getWritersCount()
{
return count($this->_writers);
}
/**
* Log an event
*/
public function log($event, $priority)
{
// sanity checks
if (empty($this->_writers)) {
throw new Zend_Log_Exception('No writers were added');
}
$event['timestamp'] = date('c');
// pack into event required by filters and writers
$event = array_merge( $event, $this->_extras);
// abort if rejected by the global filters
foreach ($this->_filters as $filter) {
if (! $filter->accept($event)) {
return;
}
}
// send to each writer
foreach ($this->_writers as $writer) {
$writer->write($event);
}
}
}
/**
*
* @package Piwik
* @subpackage Piwik_Log
*/
class Piwik_Log_Formatter_FileFormatter implements Zend_Log_Formatter_Interface
{
/**
* Formats data into a single line to be written by the writer.
*
* @param array $event event data
* @return string formatted line to write to the log
*/
public function format($event)
{
foreach($event as &$value)
{
$value = str_replace("\n", '\n', $value);
$value = '"'.$value.'"';
}
$ts = $event['timestamp'];
unset($event['timestamp']);
return $ts . ' ' . implode(" ", $event) . "\n";
}
}
/**
*
* @package Piwik
* @subpackage Piwik_Log
*/
class Piwik_Log_Formatter_ScreenFormatter implements Zend_Log_Formatter_Interface
{
function formatEvent($event)
{
// no injection in error messages, backtrace when displayed on screen
return array_map('htmlspecialchars', $event);
}
function format($string)
{
return self::getFormattedString($string);
}
static public function getFormattedString($string)
{
if(Piwik_Common::isPhpCliMode())
{
$string = str_replace(array('
','
','
'), "\n", $string);
if(is_array($string))
{
for($i=0; $i< count($string); $i++)
{
$string[i] = strip_tags($string[i]);
}
}
else
{
$string = strip_tags($string);
}
}
return $string;
}
}