Skip to content

Commit 15cf0d8

Browse files
committed
Initial commit.
0 parents  commit 15cf0d8

File tree

6 files changed

+614
-0
lines changed

6 files changed

+614
-0
lines changed

.gitignore

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# OS
2+
.DS_Store
3+
Thumbs.db
4+
5+
# IDEs
6+
.buildpath
7+
.project
8+
.settings/
9+
.build/
10+
.idea/
11+
nbproject/
12+
13+
# dependencies
14+
build
15+
vendor
16+
composer.lock

README.md

+162
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
Logger bridge for Contao Open Source CMS
2+
========================================
3+
4+
This bridge provide PSR-3 logger support for (Contao Open Source CMS)[http://contao.org].
5+
The logger is available via the (dependency injection container)[https://github.com/bit3/contao-dependency-container].
6+
7+
By default the logger use two handlers.
8+
* An contao syslog handler, that write log entries to the system log database.
9+
* And an stream handler, that write log entries to `system/logs/contao.log`.
10+
11+
By default it use (Monolog)[https://github.com/Seldaek/monolog] as implementation, but it is designed to be replaceable with any PSR-3 compatible logger implementation.
12+
13+
Access and use the logger
14+
-----------------
15+
16+
```php
17+
global $container;
18+
19+
/** @var \Psr\Log\LoggerInterface */
20+
$logger = $container['logger'];
21+
$logger->emergency('Some extreme critical message');
22+
```
23+
24+
Logger configuration
25+
--------------------
26+
27+
### Receive and change the default log level
28+
29+
```php
30+
global $container;
31+
32+
// receive default log level
33+
$level = $container['logger.default.level'];
34+
35+
// change default log level
36+
$container['logger.default.level'] = \Monolog\Logger::WARNING;
37+
```
38+
39+
### Define default log handlers
40+
41+
The default log handlers are stored in `$container['logger.handlers']` containing a list of handler services.
42+
43+
```php
44+
global $container;
45+
46+
// receive the default log handlers array (its an ArrayObject instance)
47+
$handlers = $container['logger.handlers'];
48+
49+
// remove the contao syslog handler
50+
foreach ($handlers as $index => $serviceKey) {
51+
if ($serviceKey == 'logger.handler.contao') {
52+
unset($handlers[$index]);
53+
break;
54+
}
55+
}
56+
57+
// add a custom handler
58+
$container['logger.handler.custom'] = function($container) {
59+
return new StreamHandler(TL_ROOT . '/system/logs/critical.log', \Monolog\Logger::CRITICAL);
60+
}
61+
$handlers->append('logger.handler.custom');
62+
```
63+
64+
### Create your own logger
65+
66+
```php
67+
global $container;
68+
69+
// register a handler
70+
$container['logger.handler.custom'] = function($container) {
71+
return new StreamHandler(TL_ROOT . '/system/logs/critical.log', \Monolog\Logger::CRITICAL);
72+
}
73+
74+
// register your logger
75+
$container['logger.custom'] = function($container) {
76+
// using the logger factory
77+
$factory = $container['logger.factory'];
78+
$logger = $factory('contao', array('logger.handler.custom'));
79+
80+
return $logger;
81+
};
82+
83+
// receive your logger
84+
$logger = $container['logger.custom'];
85+
```
86+
87+
Reference
88+
---------
89+
90+
### Services
91+
92+
<table>
93+
<tr>
94+
<td>`$container['logger.default.level']`</td>
95+
<td>(`int`) the default log level, default: `Logger::INFO`</td>
96+
</tr>
97+
<tr>
98+
<td>`$container['logger.default.rotation']`</td>
99+
<td>(`int`) number of days for log rotation, default: 28</td>
100+
</tr>
101+
<tr>
102+
<td>`$container['logger.handler.contao']`</td>
103+
<td>(`Monolog\Handler\HandlerInterface|Logger\ContaoHandler`) default contao syslog handler</td>
104+
</tr>
105+
<tr>
106+
<td>`$container['logger.handler.stream']`</td>
107+
<td>(`Monolog\Handler\HandlerInterface|Monolog\Handler\RotatingFileHandler`) default rotating logfile (system/logs/contao-Y-m-d.log) handler</td>
108+
</tr>
109+
<tr>
110+
<td>`$container['logger.handlers']`</td>
111+
<td>(`ArrayObject`) list of default log handlers</td>
112+
</tr>
113+
<tr>
114+
<td>`$container['logger']`</td>
115+
<td>(`Psr\Log\LoggerInterface|Monolog\Logger`) the default logger</td>
116+
</tr>
117+
</table>
118+
119+
### Factories
120+
121+
<table>
122+
<tr>
123+
<td>`$container['logger.factory.handler.contao']`</td>
124+
<td>`function($level = null, $bubble = true, $function = null, $action = null)`</td>
125+
</tr>
126+
<tr>
127+
<td>`$container['logger.factory.handler.buffer']`</td>
128+
<td>`function($handler, $bufferSize = 0, $level = null, $bubble = true)`</td>
129+
</tr>
130+
<tr>
131+
<td>`$container['logger.factory.handler.chromePhp']`</td>
132+
<td>`function($level = null, $bubble = true)`</td>
133+
</tr>
134+
<tr>
135+
<td>`$container['logger.factory.handler.fingersCrossed']`</td>
136+
<td>`function($handler, $activationStrategy = null, $bufferSize = 0, $bubble = true, $stopBuffering = true)`</td>
137+
</tr>
138+
<tr>
139+
<td>`$container['logger.factory.handler.firePhp']`</td>
140+
<td>`function($level = null, $bubble = true)`</td>
141+
</tr>
142+
<tr>
143+
<td>`$container['logger.factory.handler.group']`</td>
144+
<td>`function(array $handlers, $bubble = true)`</td>
145+
</tr>
146+
<tr>
147+
<td>`$container['logger.factory.handler.rotatingFile']`</td>
148+
<td>`function($filename, $maxFiles = null, $level = null, $bubble = true)`</td>
149+
</tr>
150+
<tr>
151+
<td>`$container['logger.factory.handler.mail']`</td>
152+
<td>`function($to = null, $subject = null, $from = null, $level = null, $bubble = true)`</td>
153+
</tr>
154+
<tr>
155+
<td>`$container['logger.factory.handler.stream']`</td>
156+
<td>`function($uri, $level = null, $bubble = true)`</td>
157+
</tr>
158+
<tr>
159+
<td>`$container['logger.factory']`</td>
160+
<td>`function($name, array $handlers)`</td>
161+
</tr>
162+
</table>

composer.json

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
{
2+
"name":"bit3/contao-logger",
3+
"description":"PSR-3 logger bridge for Contao Open Source CMS",
4+
"keywords":["contao", "logger", "psr-3"],
5+
"type":"contao-module",
6+
"license":"LGPL-3.0+",
7+
"authors":[
8+
{
9+
"name":"Tristan Lins",
10+
"email":"[email protected]",
11+
"homepage":"http://bit3.de",
12+
"role":"Developer"
13+
}
14+
],
15+
"support":{
16+
"email":"[email protected]",
17+
"issues":"https://github.com/bit3/contao-monolog/issues",
18+
"irc":"irc://irc.freenode.org/contao.dev",
19+
"source":"https://github.com/bit3/contao-monolog"
20+
},
21+
"require":{
22+
"php":">=5.3",
23+
"contao/core": "2.11.11",
24+
"bit3/contao-dependency-container": "~1",
25+
"monolog/monolog": "~1.5"
26+
},
27+
"require-dev":{
28+
"phpunit/phpunit":"3.7.*",
29+
"squizlabs/php_codesniffer":"1.*",
30+
"bit3/php-coding-standard":"@dev"
31+
},
32+
"autoload":{
33+
"psr-0":{
34+
"Logger": "src/"
35+
}
36+
},
37+
"extra": {
38+
"contao": {
39+
"symlinks": {
40+
"contao": "system/modules/logger"
41+
}
42+
},
43+
"branch-alias": {
44+
"dev-master": "1.x-dev"
45+
}
46+
}
47+
}

0 commit comments

Comments
 (0)