source: branches/comu-ver2/data/module/log4php/php4/log4php/appenders/LoggerAppenderMail.php @ 18220

Revision 18220, 3.4 KB checked in by yokkuns, 15 years ago (diff)

#149 ロガークラス作成

Line 
1<?php
2/**
3 * log4php is a PHP port of the log4j java logging package.
4 *
5 * <p>This framework is based on log4j (see {@link http://jakarta.apache.org/log4j log4j} for details).</p>
6 * <p>Design, strategies and part of the methods documentation are developed by log4j team
7 * (Ceki Gülcü as log4j project founder and
8 * {@link http://jakarta.apache.org/log4j/docs/contributors.html contributors}).</p>
9 *
10 * <p>PHP port, extensions and modifications by VxR. All rights reserved.<br>
11 * For more information, please see {@link http://www.vxr.it/log4php/}.</p>
12 *
13 * <p>This software is published under the terms of the LGPL License
14 * a copy of which has been included with this distribution in the LICENSE file.</p>
15 *
16 * @package log4php
17 * @subpackage appenders
18 */
19
20/**
21 * @ignore
22 */
23if (!defined('LOG4PHP_DIR')) define('LOG4PHP_DIR', dirname(__FILE__) . '/..');
24 
25require_once(LOG4PHP_DIR . '/LoggerAppenderSkeleton.php');
26require_once(LOG4PHP_DIR . '/LoggerLog.php');
27
28/**
29 * Appends log events to mail using php function {@link PHP_MANUAL#mail}.
30 *
31 * <p>Parameters are {@link $from}, {@link $to}, {@link $subject}.</p>
32 * <p>This appender requires a layout.</p>
33 *
34 * @author VxR <vxr@vxr.it>
35 * @version $Revision: 1.8 $
36 * @package log4php
37 * @subpackage appenders
38 */
39class LoggerAppenderMail extends LoggerAppenderSkeleton {
40
41    /**
42     * @var string 'from' field
43     */
44    var $from = null;
45
46    /**
47     * @var string 'subject' field
48     */
49    var $subject = 'Log4php Report';
50   
51    /**
52     * @var string 'to' field
53     */
54    var $to = null;
55
56    /**
57     * @var string used to create mail body
58     * @access private
59     */
60    var $body = '';
61   
62    /**
63     * @access private
64     */
65    var $requiresLayout = true;
66   
67    /**
68     * Constructor.
69     *
70     * @param string $name appender name
71     */
72    function LoggerAppenderMail($name)
73    {
74        $this->LoggerAppenderSkeleton($name);
75    }
76
77    function activateOptions()
78    {
79        $this->closed = false;
80        return;
81    }
82   
83    function close()
84    {
85        $from       = $this->getFrom();
86        $to         = $this->getTo();
87
88        if (!empty($this->body) and $from !== null and $to !== null and $this->layout !== null) {
89
90            $subject    = $this->getSubject();           
91
92            LoggerLog::debug("LoggerAppenderMail::close() sending mail from=[{$from}] to=[{$to}] subject=[{$subject}]");
93           
94            @mail(
95                $to, $subject,
96                $this->layout->getHeader() . $this->body . $this->layout->getFooter(),
97                "From: {$from}\r\n"
98            );
99        }
100        $this->closed = true;
101    }
102   
103    /**
104     * @return string
105     */
106    function getFrom()
107    {
108        return $this->from;
109    }
110   
111    /**
112     * @return string
113     */
114    function getSubject()
115    {
116        return $this->subject;
117    }
118
119    /**
120     * @return string
121     */
122    function getTo()
123    {
124        return $this->to;
125    }
126   
127    function setSubject($subject)
128    {
129        $this->subject = $subject;
130    }
131   
132    function setTo($to)
133    {
134        $this->to = $to;
135    }
136
137    function setFrom($from)
138    {
139        $this->from = $from;
140    } 
141
142    function append($event)
143    {
144        if ($this->layout !== null)
145            $this->body .= $this->layout->format($event);
146    }
147}
148?>
Note: See TracBrowser for help on using the repository browser.