diff --git a/application/controllers/ListController.php b/application/controllers/ListController.php index 46a370df6..c062266a9 100644 --- a/application/controllers/ListController.php +++ b/application/controllers/ListController.php @@ -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']) ) diff --git a/application/forms/Config/LoggingForm.php b/application/forms/Config/LoggingForm.php index 8bb03dfa5..81998c40c 100644 --- a/application/forms/Config/LoggingForm.php +++ b/application/forms/Config/LoggingForm.php @@ -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': diff --git a/library/Icinga/Logger/Writer/StreamWriter.php b/library/Icinga/Logger/Writer/FileWriter.php similarity index 75% rename from library/Icinga/Logger/Writer/StreamWriter.php rename to library/Icinga/Logger/Writer/FileWriter.php index 981d01d03..1208f3f3b 100644 --- a/library/Icinga/Logger/Writer/StreamWriter.php +++ b/library/Icinga/Logger/Writer/FileWriter.php @@ -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); diff --git a/test/php/library/Icinga/Logger/Writer/StreamWriterTest.php b/test/php/library/Icinga/Logger/Writer/StreamWriterTest.php index 12febf1f7..f20191418 100644 --- a/test/php/library/Icinga/Logger/Writer/StreamWriterTest.php +++ b/test/php/library/Icinga/Logger/Writer/StreamWriterTest.php @@ -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');