1: <?php
2: 3: 4: 5:
6: class Horde_Core_Factory_Logger extends Horde_Core_Factory_Injector
7: {
8: 9: 10: 11: 12:
13: public $error;
14:
15: 16:
17: public function create(Horde_Injector $injector)
18: {
19: global $conf;
20:
21: $this->error = null;
22:
23:
24: if (empty($conf['log']['enabled'])) {
25: return new Horde_Core_Log_Logger(new Horde_Log_Handler_Null());
26: }
27:
28: switch ($conf['log']['type']) {
29: case 'file':
30: case 'stream':
31: $append = ($conf['log']['type'] == 'file')
32: ? ($conf['log']['params']['append'] ? 'a+' : 'w+')
33: : null;
34: $format = isset($conf['log']['params']['format'])
35: ? $conf['log']['params']['format']
36: : 'default';
37:
38: switch ($format) {
39: case 'custom':
40: $formatter = new Horde_Log_Formatter_Xml(array('format' => $conf['log']['params']['template']));
41: break;
42:
43: case 'default':
44: default:
45:
46: $formatter = null;
47: break;
48:
49: case 'xml':
50: $formatter = new Horde_Log_Formatter_Xml();
51: break;
52: }
53:
54: try {
55: $handler = new Horde_Log_Handler_Stream($conf['log']['name'], $append, $formatter);
56: } catch (Horde_Log_Exception $e) {
57: $this->error = $e;
58: return new Horde_Core_Log_Logger(new Horde_Log_Handler_Null());
59: }
60: try {
61: $handler->setOption('ident', $conf['log']['ident']);
62: } catch (Horde_Log_Exception $e) {
63: }
64: break;
65:
66: case 'syslog':
67: try {
68: $handler = new Horde_Log_Handler_Syslog();
69: if (!empty($conf['log']['name'])) {
70: $handler->setOption('facility', $conf['log']['name']);
71: }
72: if (!empty($conf['log']['ident'])) {
73: $handler->setOption('ident', $conf['log']['ident']);
74: }
75: } catch (Horde_Log_Exception $e) {
76: $this->error = $e;
77: return new Horde_Core_Log_Logger(new Horde_Log_Handler_Null());
78: }
79: break;
80:
81: case 'null':
82: default:
83:
84: return new Horde_Core_Log_Logger(new Horde_Log_Handler_Null());
85: }
86:
87: if (!defined('Horde_Log::' . $conf['log']['priority'])) {
88: $conf['log']['priority'] = 'NOTICE';
89: }
90: $handler->addFilter(constant('Horde_Log::' . $conf['log']['priority']));
91:
92: try {
93: 94:
95: return new Horde_Core_Log_Logger($handler);
96: } catch (Horde_Log_Exception $e) {
97: $this->error = $e;
98: return new Horde_Core_Log_Logger(new Horde_Log_Handler_Null());
99: }
100: }
101:
102: }
103: