parent
0b3d3e9bb2
commit
4cf3044a53
|
@ -66,7 +66,7 @@ class ListController extends Controller
|
|||
$config_ini = IcingaConfig::app()->toArray();
|
||||
if (!in_array('logging', $config_ini) || (
|
||||
in_array('type', $config_ini['logging']) &&
|
||||
$config_ini['logging']['type'] === 'stream' &&
|
||||
$config_ini['logging']['type'] === 'file' &&
|
||||
in_array('target', $config_ini['logging']) &&
|
||||
file_exists($config_ini['logging']['target'])
|
||||
)
|
||||
|
|
|
@ -41,7 +41,7 @@ use Icinga\Web\Form\Validator\WritablePathValidator;
|
|||
class LoggingForm extends Form
|
||||
{
|
||||
/**
|
||||
* Return the default logging directory for type "stream"
|
||||
* Return the default logging directory for type "file"
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
|
@ -97,30 +97,17 @@ class LoggingForm extends Form
|
|||
'required' => true,
|
||||
'label' => t('Logging Type'),
|
||||
'helptext' => t('The type of logging to utilize.'),
|
||||
'value' => $loggingConfig->get('type', 'stream'),
|
||||
'value' => $loggingConfig->get('type', 'file'),
|
||||
'multiOptions' => array(
|
||||
'stream' => t('File'),
|
||||
'file' => t('File'),
|
||||
'syslog' => 'Syslog'
|
||||
)
|
||||
)
|
||||
);
|
||||
$this->enableAutoSubmit(array('logging_type'));
|
||||
|
||||
switch ($this->getRequest()->getParam('logging_type', $loggingConfig->get('type', 'stream')))
|
||||
switch ($this->getRequest()->getParam('logging_type', $loggingConfig->get('type', 'file')))
|
||||
{
|
||||
case 'stream':
|
||||
$this->addElement(
|
||||
'text',
|
||||
'logging_target',
|
||||
array(
|
||||
'required' => true,
|
||||
'label' => t('Filepath'),
|
||||
'helptext' => t('The logfile to write messages to.'),
|
||||
'value' => $loggingConfig->target ? $loggingConfig->target : $this->getDefaultLogDir(),
|
||||
'validators' => array(new WritablePathValidator())
|
||||
)
|
||||
);
|
||||
break;
|
||||
case 'syslog':
|
||||
$this->addElement(
|
||||
'text',
|
||||
|
@ -146,6 +133,19 @@ class LoggingForm extends Form
|
|||
)
|
||||
);
|
||||
break;
|
||||
case 'file':
|
||||
default:
|
||||
$this->addElement(
|
||||
'text',
|
||||
'logging_target',
|
||||
array(
|
||||
'required' => true,
|
||||
'label' => t('Filepath'),
|
||||
'helptext' => t('The logfile to write messages to.'),
|
||||
'value' => $loggingConfig->target ? $loggingConfig->target : $this->getDefaultLogDir(),
|
||||
'validators' => array(new WritablePathValidator())
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
$this->setSubmitLabel('{{SAVE_ICON}} Save Changes');
|
||||
|
@ -166,7 +166,7 @@ class LoggingForm extends Form
|
|||
|
||||
switch ($values['logging_type'])
|
||||
{
|
||||
case 'stream':
|
||||
case 'file':
|
||||
$cfg['logging']['target'] = $values['logging_target'];
|
||||
break;
|
||||
case 'syslog':
|
||||
|
|
|
@ -12,23 +12,23 @@ use Icinga\Application\Config;
|
|||
use Icinga\Exception\ConfigurationError;
|
||||
|
||||
/**
|
||||
* Class to write log messages to a stream
|
||||
* Class to write log messages to a file
|
||||
*/
|
||||
class StreamWriter extends LogWriter
|
||||
class FileWriter extends LogWriter
|
||||
{
|
||||
/**
|
||||
* The path to the stream
|
||||
* The path to the file
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $stream;
|
||||
protected $path;
|
||||
|
||||
/**
|
||||
* Create a new log writer initialized with the given configuration
|
||||
*/
|
||||
public function __construct(Zend_Config $config)
|
||||
{
|
||||
$this->stream = Config::resolvePath($config->target);
|
||||
$this->path = Config::resolvePath($config->target);
|
||||
$this->setup();
|
||||
}
|
||||
|
||||
|
@ -44,17 +44,17 @@ class StreamWriter extends LogWriter
|
|||
}
|
||||
|
||||
/**
|
||||
* Create the stream if it does not already exist
|
||||
* Create the file if it does not already exist
|
||||
*/
|
||||
protected function setup()
|
||||
{
|
||||
if (substr($this->stream, 0, 6) !== 'php://') {
|
||||
if (!file_exists($this->stream) && (!@touch($this->stream) || !@chmod($this->stream, 0664))) {
|
||||
throw new ConfigurationError('Cannot create log file "' . $this->stream . '"');
|
||||
if (substr($this->path, 0, 6) !== 'php://') {
|
||||
if (!file_exists($this->path) && (!@touch($this->path) || !@chmod($this->path, 0664))) {
|
||||
throw new ConfigurationError('Cannot create log file "' . $this->path . '"');
|
||||
}
|
||||
|
||||
if (!@is_writable($this->stream)) {
|
||||
throw new ConfigurationError('Cannot write to log file "' . $this->stream . '"');
|
||||
if (!@is_writable($this->path)) {
|
||||
throw new ConfigurationError('Cannot write to log file "' . $this->path . '"');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -85,18 +85,18 @@ class StreamWriter extends LogWriter
|
|||
}
|
||||
|
||||
/**
|
||||
* Write a message to the stream
|
||||
* Write a message to the path
|
||||
*
|
||||
* @param string $text The message to write
|
||||
*
|
||||
* @throws Exception In case write acess to the stream failed
|
||||
* @throws Exception In case write acess to the path failed
|
||||
*/
|
||||
protected function write($text)
|
||||
{
|
||||
$fd = fopen($this->stream, 'a');
|
||||
$fd = fopen($this->path, 'a');
|
||||
|
||||
if ($fd === false || fwrite($fd, $text . PHP_EOL) === false) {
|
||||
throw new Exception('Failed to write to log file "' . $this->stream . '"');
|
||||
throw new Exception('Failed to write to log file "' . $this->path . '"');
|
||||
}
|
||||
|
||||
fclose($fd);
|
|
@ -7,7 +7,7 @@ namespace Tests\Icinga\Logger\Writer;
|
|||
use Zend_Config;
|
||||
use Icinga\Logger\Logger;
|
||||
use Icinga\Test\BaseTestCase;
|
||||
use Icinga\Logger\Writer\StreamWriter;
|
||||
use Icinga\Logger\Writer\FileWriter;
|
||||
|
||||
class LoggerTest extends BaseTestCase
|
||||
{
|
||||
|
@ -27,7 +27,7 @@ class LoggerTest extends BaseTestCase
|
|||
|
||||
public function testWhetherStreamWriterCreatesMissingFiles()
|
||||
{
|
||||
new StreamWriter(new Zend_Config(array('target' => $this->target)));
|
||||
new FileWriter(new Zend_Config(array('target' => $this->target)));
|
||||
$this->assertFileExists($this->target, 'StreamWriter does not create missing files on initialization');
|
||||
}
|
||||
|
||||
|
@ -36,7 +36,7 @@ class LoggerTest extends BaseTestCase
|
|||
*/
|
||||
public function testWhetherStreamWriterWritesMessages()
|
||||
{
|
||||
$writer = new StreamWriter(new Zend_Config(array('target' => $this->target)));
|
||||
$writer = new FileWriter(new Zend_Config(array('target' => $this->target)));
|
||||
$writer->log(Logger::$ERROR, 'This is a test error');
|
||||
$log = file_get_contents($this->target);
|
||||
$this->assertContains('This is a test error', $log, 'StreamWriter does not write log messages');
|
||||
|
|
Loading…
Reference in New Issue