|
1 <?php |
|
2 /** |
|
3 * Licensed to the Apache Software Foundation (ASF) under one or more |
|
4 * contributor license agreements. See the NOTICE file distributed with |
|
5 * this work for additional information regarding copyright ownership. |
|
6 * The ASF licenses this file to You under the Apache License, Version 2.0 |
|
7 * (the "License"); you may not use this file except in compliance with |
|
8 * the License. You may obtain a copy of the License at |
|
9 * |
|
10 * http://www.apache.org/licenses/LICENSE-2.0 |
|
11 * |
|
12 * Unless required by applicable law or agreed to in writing, software |
|
13 * distributed under the License is distributed on an "AS IS" BASIS, |
|
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
15 * See the License for the specific language governing permissions and |
|
16 * limitations under the License. |
|
17 */ |
|
18 |
|
19 /** |
|
20 * LoggerAppenderMail appends log events via email. |
|
21 * |
|
22 * This appender does not send individual emails for each logging requests but |
|
23 * will collect them in a buffer and send them all in a single email once the |
|
24 * appender is closed (i.e. when the script exists). Because of this, it may |
|
25 * not appropriate for long running scripts, in which case |
|
26 * LoggerAppenderMailEvent might be a better choice. |
|
27 * |
|
28 * This appender uses a layout. |
|
29 * |
|
30 * ## Configurable parameters: ## |
|
31 * |
|
32 * - **to** - Email address(es) to which the log will be sent. Multiple email |
|
33 * addresses may be specified by separating them with a comma. |
|
34 * - **from** - Email address which will be used in the From field. |
|
35 * - **subject** - Subject of the email message. |
|
36 * |
|
37 * @version $Revision: 1337820 $ |
|
38 * @package log4php |
|
39 * @subpackage appenders |
|
40 * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0 |
|
41 * @link http://logging.apache.org/log4php/docs/appenders/mail.html Appender documentation |
|
42 */ |
|
43 class LoggerAppenderMail extends LoggerAppender { |
|
44 |
|
45 /** |
|
46 * Email address to put in From field of the email. |
|
47 * @var string |
|
48 */ |
|
49 protected $from = null; |
|
50 |
|
51 /** |
|
52 * The subject of the email. |
|
53 * @var string |
|
54 */ |
|
55 protected $subject = 'Log4php Report'; |
|
56 |
|
57 /** |
|
58 * One or more comma separated email addresses to which to send the email. |
|
59 * @var string |
|
60 */ |
|
61 protected $to = null; |
|
62 |
|
63 /** |
|
64 * Indiciates whether this appender should run in dry mode. |
|
65 * @deprecated |
|
66 * @var boolean |
|
67 */ |
|
68 protected $dry = false; |
|
69 |
|
70 /** |
|
71 * Buffer which holds the email contents before it is sent. |
|
72 * @var string |
|
73 */ |
|
74 protected $body = ''; |
|
75 |
|
76 public function append(LoggerLoggingEvent $event) { |
|
77 if ($this->layout !== null) { |
|
78 $this->body .= $this->layout->format($event); |
|
79 } |
|
80 } |
|
81 |
|
82 public function close() { |
|
83 if ($this->closed != true) { |
|
84 $from = $this->from; |
|
85 $to = $this->to; |
|
86 |
|
87 if (!empty($this->body) and $from !== null and $to !== null and $this->layout !== null) { |
|
88 $subject = $this->subject; |
|
89 if (!$this->dry) { |
|
90 mail( |
|
91 $to, $subject, |
|
92 $this->layout->getHeader() . $this->body . $this->layout->getFooter(), |
|
93 "From: {$from}\r\n"); |
|
94 } else { |
|
95 echo "DRY MODE OF MAIL APP.: Send mail to: " . $to . " with content: " . $this->body; |
|
96 } |
|
97 } |
|
98 $this->closed = true; |
|
99 } |
|
100 } |
|
101 |
|
102 /** Sets the 'subject' parameter. */ |
|
103 public function setSubject($subject) { |
|
104 $this->setString('subject', $subject); |
|
105 } |
|
106 |
|
107 /** Returns the 'subject' parameter. */ |
|
108 public function getSubject() { |
|
109 return $this->subject; |
|
110 } |
|
111 |
|
112 /** Sets the 'to' parameter. */ |
|
113 public function setTo($to) { |
|
114 $this->setString('to', $to); |
|
115 } |
|
116 |
|
117 /** Returns the 'to' parameter. */ |
|
118 public function getTo() { |
|
119 return $this->to; |
|
120 } |
|
121 |
|
122 /** Sets the 'from' parameter. */ |
|
123 public function setFrom($from) { |
|
124 $this->setString('from', $from); |
|
125 } |
|
126 |
|
127 /** Returns the 'from' parameter. */ |
|
128 public function getFrom() { |
|
129 return $this->from; |
|
130 } |
|
131 |
|
132 /** Enables or disables dry mode. */ |
|
133 public function setDry($dry) { |
|
134 $this->setBoolean('dry', $dry); |
|
135 } |
|
136 } |