mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-09-08 10:41:25 +02:00
Attempt to create the path a log file will be written to before blindly attempting to write the file. This makes dynamically named log paths (i.e. rotation by date) possible.
66 lines
1.6 KiB
PHP
66 lines
1.6 KiB
PHP
<?php
|
|
require_once 'Zend/Log/Writer/Abstract.php';
|
|
|
|
/**
|
|
* Writes an error message to a file.
|
|
*
|
|
* Note: You need to make sure your web server is able
|
|
* to write to the file path that you specify to write
|
|
* logs to.
|
|
*
|
|
* @uses error_log() built-in PHP function.
|
|
* @see SS_Log for more information on using writers.
|
|
*
|
|
* @package framework
|
|
* @subpackage dev
|
|
*/
|
|
class SS_LogFileWriter extends Zend_Log_Writer_Abstract {
|
|
|
|
/**
|
|
* The path to the file that errors will be stored in.
|
|
* For example, "/var/logs/silverstripe/errors.log".
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $path;
|
|
|
|
/**
|
|
* Message type to pass to error_log()
|
|
* @see http://us3.php.net/manual/en/function.error-log.php
|
|
* @var int
|
|
*/
|
|
protected $messageType;
|
|
|
|
/**
|
|
* Extra headers to pass to error_log()
|
|
* @see http://us3.php.net/manual/en/function.error-log.php
|
|
* @var string
|
|
*/
|
|
protected $extraHeaders;
|
|
|
|
public function __construct($path, $messageType = 3, $extraHeaders = '') {
|
|
$this->path = $path;
|
|
$this->messageType = $messageType;
|
|
$this->extraHeaders = $extraHeaders;
|
|
}
|
|
|
|
static function factory($path, $messageType = 3, $extraHeaders = '') {
|
|
return new SS_LogFileWriter($path, $messageType, $extraHeaders);
|
|
}
|
|
|
|
/**
|
|
* Write the log message to the file path set
|
|
* in this writer.
|
|
*/
|
|
public function _write($event) {
|
|
if(!$this->_formatter) {
|
|
$formatter = new SS_LogErrorFileFormatter();
|
|
$this->setFormatter($formatter);
|
|
}
|
|
$message = $this->_formatter->format($event);
|
|
if(!file_exists(dirname($this->path))) mkdir(dirname($this->path), 0755, true);
|
|
error_log($message, $this->messageType, $this->path, $this->extraHeaders);
|
|
}
|
|
|
|
}
|