pictcode / lib / Cake / Log / Engine / ConsoleLog.php @ 0b1b8047
履歴 | 表示 | アノテート | ダウンロード (2.559 KB)
1 | 635eef61 | spyder1211 | <?php
|
---|---|---|---|
2 | /**
|
||
3 | * Console Logging
|
||
4 | *
|
||
5 | * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
|
||
6 | * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||
7 | *
|
||
8 | * Licensed under The MIT License
|
||
9 | * For full copyright and license information, please see the LICENSE.txt
|
||
10 | * Redistributions of files must retain the above copyright notice.
|
||
11 | *
|
||
12 | * @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||
13 | * @link http://www.cakefoundation.org/projects/info/cakephp CakePHP(tm) Project
|
||
14 | * @package Cake.Log.Engine
|
||
15 | * @since CakePHP(tm) v 2.2
|
||
16 | * @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||
17 | */
|
||
18 | |||
19 | App::uses('BaseLog', 'Log/Engine'); |
||
20 | App::uses('ConsoleOutput', 'Console'); |
||
21 | |||
22 | /**
|
||
23 | * Console logging. Writes logs to console output.
|
||
24 | *
|
||
25 | * @package Cake.Log.Engine
|
||
26 | */
|
||
27 | class ConsoleLog extends BaseLog { |
||
28 | |||
29 | /**
|
||
30 | * Output stream
|
||
31 | *
|
||
32 | * @var ConsoleOutput
|
||
33 | */
|
||
34 | protected $_output = null; |
||
35 | |||
36 | /**
|
||
37 | * Constructs a new Console Logger.
|
||
38 | *
|
||
39 | * Config
|
||
40 | *
|
||
41 | * - `types` string or array, levels the engine is interested in
|
||
42 | * - `scopes` string or array, scopes the engine is interested in
|
||
43 | * - `stream` the path to save logs on.
|
||
44 | * - `outputAs` integer or ConsoleOutput::[RAW|PLAIN|COLOR]
|
||
45 | *
|
||
46 | * @param array $config Options for the FileLog, see above.
|
||
47 | * @throws CakeLogException
|
||
48 | */
|
||
49 | public function __construct($config = array()) { |
||
50 | parent::__construct($config); |
||
51 | if ((DS === '\\' && !(bool)env('ANSICON') && env('ConEmuANSI') !== 'ON') || |
||
52 | (function_exists('posix_isatty') && !posix_isatty($this->_output)) |
||
53 | ) { |
||
54 | $outputAs = ConsoleOutput::PLAIN; |
||
55 | } else {
|
||
56 | $outputAs = ConsoleOutput::COLOR; |
||
57 | } |
||
58 | $config = Hash::merge(array( |
||
59 | 'stream' => 'php://stderr', |
||
60 | 'types' => null, |
||
61 | 'scopes' => array(), |
||
62 | 'outputAs' => $outputAs, |
||
63 | ), $this->_config);
|
||
64 | $config = $this->config($config); |
||
65 | if ($config['stream'] instanceof ConsoleOutput) { |
||
66 | $this->_output = $config['stream']; |
||
67 | } elseif (is_string($config['stream'])) { |
||
68 | $this->_output = new ConsoleOutput($config['stream']); |
||
69 | } else {
|
||
70 | throw new CakeLogException('`stream` not a ConsoleOutput nor string'); |
||
71 | } |
||
72 | $this->_output->outputAs($config['outputAs']); |
||
73 | } |
||
74 | |||
75 | /**
|
||
76 | * Implements writing to console.
|
||
77 | *
|
||
78 | * @param string $type The type of log you are making.
|
||
79 | * @param string $message The message you want to log.
|
||
80 | * @return bool success of write.
|
||
81 | */
|
||
82 | public function write($type, $message) { |
||
83 | $output = date('Y-m-d H:i:s') . ' ' . ucfirst($type) . ': ' . $message . "\n"; |
||
84 | return $this->_output->write(sprintf('<%s>%s</%s>', $type, $output, $type), false); |
||
85 | } |
||
86 | |||
87 | } |