| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 | 
							- <?php
 
- namespace Codeception\Extension;
 
- use Codeception\Event\FailEvent;
 
- use Codeception\Event\StepEvent;
 
- use Codeception\Event\SuiteEvent;
 
- use Codeception\Event\TestEvent;
 
- use Codeception\Events;
 
- use Codeception\Exception\ConfigurationException;
 
- use Codeception\Exception\ExtensionException;
 
- use Codeception\Extension;
 
- use Codeception\Test\Descriptor;
 
- use Monolog\Formatter\LineFormatter;
 
- use Monolog\Handler\RotatingFileHandler;
 
- /**
 
-  * Log suites/tests/steps using Monolog library.
 
-  * Monolog should be installed additionally by Composer.
 
-  *
 
-  * ```
 
-  * composer require monolog/monolog
 
-  * ```
 
-  *
 
-  * Steps are logged into `tests/_output/codeception.log`
 
-  *
 
-  * To enable this module add to your `codeception.yml`:
 
-  *
 
-  * ``` yaml
 
-  * extensions:
 
-  *     enabled: [Codeception\Extension\Logger]
 
-  * ```
 
-  *
 
-  * #### Config
 
-  *
 
-  * * `max_files` (default: 3) - how many log files to keep
 
-  *
 
-  */
 
- class Logger extends Extension
 
- {
 
-     public static $events = [
 
-         Events::SUITE_BEFORE    => 'beforeSuite',
 
-         Events::TEST_BEFORE     => 'beforeTest',
 
-         Events::TEST_AFTER      => 'afterTest',
 
-         Events::TEST_END        => 'endTest',
 
-         Events::STEP_BEFORE     => 'beforeStep',
 
-         Events::TEST_FAIL       => 'testFail',
 
-         Events::TEST_ERROR      => 'testError',
 
-         Events::TEST_INCOMPLETE => 'testIncomplete',
 
-         Events::TEST_SKIPPED    => 'testSkipped',
 
-     ];
 
-     protected $logHandler;
 
-     /**
 
-      * @var \Monolog\Logger
 
-      */
 
-     protected static $logger;
 
-     protected $path;
 
-     protected $config = ['max_files' => 3];
 
-     public function _initialize()
 
-     {
 
-         if (!class_exists('\Monolog\Logger')) {
 
-             throw new ConfigurationException("Logger extension requires Monolog library to be installed");
 
-         }
 
-         $this->path = $this->getLogDir();
 
-         // internal log
 
-         $logHandler = new RotatingFileHandler($this->path . 'codeception.log', $this->config['max_files']);
 
-         $formatter = $logHandler->getFormatter();
 
-         if ($formatter instanceof LineFormatter) {
 
-             $formatter->ignoreEmptyContextAndExtra(true);
 
-         }
 
-         self::$logger = new \Monolog\Logger('Codeception');
 
-         self::$logger->pushHandler($logHandler);
 
-     }
 
-     public static function getLogger()
 
-     {
 
-         return self::$logger;
 
-     }
 
-     public function beforeSuite(SuiteEvent $e)
 
-     {
 
-         $suite = str_replace('\\', '_', $e->getSuite()->getName());
 
-         $this->logHandler = new RotatingFileHandler($this->path . $suite, $this->config['max_files']);
 
-     }
 
-     public function beforeTest(TestEvent $e)
 
-     {
 
-         self::$logger = new \Monolog\Logger(Descriptor::getTestFileName($e->getTest()));
 
-         self::$logger->pushHandler($this->logHandler);
 
-         self::$logger->info('------------------------------------');
 
-         self::$logger->info("STARTED: " . ucfirst(Descriptor::getTestAsString($e->getTest())));
 
-     }
 
-     public function afterTest(TestEvent $e)
 
-     {
 
-     }
 
-     public function endTest(TestEvent $e)
 
-     {
 
-         self::$logger->info("PASSED");
 
-     }
 
-     public function testFail(FailEvent $e)
 
-     {
 
-         self::$logger->alert($e->getFail()->getMessage());
 
-         self::$logger->info("# FAILED #");
 
-     }
 
-     public function testError(FailEvent $e)
 
-     {
 
-         self::$logger->alert($e->getFail()->getMessage());
 
-         self::$logger->info("# ERROR #");
 
-     }
 
-     public function testSkipped(FailEvent $e)
 
-     {
 
-         self::$logger->info("# Skipped #");
 
-     }
 
-     public function testIncomplete(FailEvent $e)
 
-     {
 
-         self::$logger->info("# Incomplete #");
 
-     }
 
-     public function beforeStep(StepEvent $e)
 
-     {
 
-         self::$logger->info((string) $e->getStep());
 
-     }
 
- }
 
- if (!function_exists('codecept_log')) {
 
-     function codecept_log()
 
-     {
 
-         return Logger::getLogger();
 
-     }
 
- } else {
 
-     throw new ExtensionException('Codeception\Extension\Logger', "function 'codecept_log' already defined");
 
- }
 
 
  |