Changeset View
Changeset View
Standalone View
Standalone View
src/channel/PhutilLogFileChannel.php
- This file was added.
| <?php | |||||
| /** | |||||
| * A @{class:PhutilChannelChannel} which wraps some other channel and writes | |||||
| * data passed over it to a log file. | |||||
| */ | |||||
| final class PhutilLogFileChannel extends PhutilChannelChannel { | |||||
| private $logfile; | |||||
| public function setLogfile($path) { | |||||
| $this->logfile = fopen($path, 'a'); | |||||
| $this->log('--- '.getmypid().' ---'); | |||||
| return $this; | |||||
| } | |||||
| public function read() { | |||||
| $buffer = parent::read(); | |||||
| if (strlen($buffer)) { | |||||
| $this->log('>>> '.phutil_loggable_string($buffer)); | |||||
| } | |||||
| return $buffer; | |||||
| } | |||||
| public function write($message) { | |||||
| if (strlen($message)) { | |||||
| $this->log('<<< '.phutil_loggable_string($message)); | |||||
| } | |||||
| return parent::write($message); | |||||
| } | |||||
| private function log($message) { | |||||
| if ($this->logfile) { | |||||
| fwrite($this->logfile, $message."\n"); | |||||
| } | |||||
| } | |||||
| } | |||||