LoggerAppenderMail.php
3.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<?php
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* @package log4php
*/
/**
* Appends log events to mail using php function {@link PHP_MANUAL#mail}.
*
* The appender sends all log events at once after the request has been
* finsished and the appender is beeing closed.
*
* Configurable parameters for this appender:
*
* - layout - Sets the layout class for this appender (required)
* - to - Sets the recipient of the mail (required)
* - from - Sets the sender of the mail (optional)
* - subject - Sets the subject of the mail (optional)
*
* An example:
*
* {@example ../../examples/php/appender_mail.php 19}
*
* {@example ../../examples/resources/appender_mail.properties 18}
*
* The above will output something like:
* <pre>
* Date: Tue, 8 Sep 2009 21:51:04 +0200 (CEST)
* From: someone@example.com
* To: root@localhost
* Subject: Log4php test
*
* Tue Sep 8 21:51:04 2009,120 [5485] FATAL root - Some critical message!
* Tue Sep 8 21:51:06 2009,120 [5485] FATAL root - Some more critical message!
* </pre>
* @version $Revision: 883108 $
* @package log4php
* @subpackage appenders
*/
class LoggerAppenderMail extends LoggerAppender {
/** @var string 'from' field */
private $from = null;
/** @var string 'subject' field */
private $subject = 'Log4php Report';
/** @var string 'to' field */
private $to = null;
/** @var indiciates if this appender should run in dry mode */
private $dry = false;
/** @var string used to create mail body */
private $body = '';
/**
* Constructor.
*
* @param string $name appender name
*/
public function __construct($name = '') {
parent::__construct($name);
$this->requiresLayout = true;
}
public function __destruct() {
$this->close();
}
public function activateOptions() {
$this->closed = false;
}
public function close() {
if($this->closed != true) {
$from = $this->from;
$to = $this->to;
if(!empty($this->body) and $from !== null and $to !== null and $this->layout !== null) {
$subject = $this->subject;
if(!$this->dry) {
mail(
$to, $subject,
$this->layout->getHeader() . $this->body . $this->layout->getFooter(),
"From: {$from}\r\n");
} else {
echo "DRY MODE OF MAIL APP.: Send mail to: ".$to." with content: ".$this->body;
}
}
$this->closed = true;
}
}
public function setSubject($subject) {
$this->subject = $subject;
}
public function setTo($to) {
$this->to = $to;
}
public function setFrom($from) {
$this->from = $from;
}
public function setDry($dry) {
$this->dry = $dry;
}
public function append(LoggerLoggingEvent $event) {
if($this->layout !== null) {
$this->body .= $this->layout->format($event);
}
}
}