Overview

Packages

  • log4php
    • appenders
    • configurators
    • filters
    • helpers
    • layouts
    • pattern
    • renderers

Classes

  • LoggerLayoutHtml
  • LoggerLayoutPattern
  • LoggerLayoutSerialized
  • LoggerLayoutSimple
  • LoggerLayoutXml
  • Overview
  • Package
  • Class
  • Tree
  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:  * @package log4php
 19:  */
 20: 
 21: /**
 22:  * This layout outputs events in a HTML table.
 23:  *
 24:  * Configurable parameters for this layout are:
 25:  * 
 26:  * - title
 27:  * - locationInfo
 28:  *
 29:  * An example for this layout:
 30:  * 
 31:  * {@example ../../examples/php/layout_html.php 19}<br>
 32:  * 
 33:  * The corresponding XML file:
 34:  * 
 35:  * {@example ../../examples/resources/layout_html.properties 18}
 36:  * 
 37:  * The above will print a HTML table that looks, converted back to plain text, like the following:<br>
 38:  * <pre>
 39:  *    Log session start time Wed Sep 9 00:11:30 2009
 40:  *
 41:  *    Time Thread Level Category   Message
 42:  *    0    8318   INFO  root       Hello World!
 43:  * </pre>
 44:  * 
 45:  * @version $Revision: 1379731 $
 46:  * @package log4php
 47:  * @subpackage layouts
 48:  */
 49: class LoggerLayoutHtml extends LoggerLayout {
 50:     /**
 51:      * The <b>LocationInfo</b> option takes a boolean value. By
 52:      * default, it is set to false which means there will be no location
 53:      * information output by this layout. If the the option is set to
 54:      * true, then the file name and line number of the statement
 55:      * at the origin of the log statement will be output.
 56:      *
 57:      * <p>If you are embedding this layout within a {@link LoggerAppenderMail}
 58:      * or a {@link LoggerAppenderMailEvent} then make sure to set the
 59:      * <b>LocationInfo</b> option of that appender as well.
 60:      * @var boolean
 61:      */
 62:     protected $locationInfo = false;
 63:     
 64:     /**
 65:      * The <b>Title</b> option takes a String value. This option sets the
 66:      * document title of the generated HTML document.
 67:      * Defaults to 'Log4php Log Messages'.
 68:      * @var string
 69:      */
 70:     protected $title = "Log4php Log Messages";
 71:     
 72:     /**
 73:      * The <b>LocationInfo</b> option takes a boolean value. By
 74:      * default, it is set to false which means there will be no location
 75:      * information output by this layout. If the the option is set to
 76:      * true, then the file name and line number of the statement
 77:      * at the origin of the log statement will be output.
 78:      *
 79:      * <p>If you are embedding this layout within a {@link LoggerAppenderMail}
 80:      * or a {@link LoggerAppenderMailEvent} then make sure to set the
 81:      * <b>LocationInfo</b> option of that appender as well.
 82:      */
 83:     public function setLocationInfo($flag) {
 84:         $this->setBoolean('locationInfo', $flag);
 85:     }
 86: 
 87:     /**
 88:      * Returns the current value of the <b>LocationInfo</b> option.
 89:      */
 90:     public function getLocationInfo() {
 91:         return $this->locationInfo;
 92:     }
 93:     
 94:     /**
 95:      * The <b>Title</b> option takes a String value. This option sets the
 96:      * document title of the generated HTML document.
 97:      * Defaults to 'Log4php Log Messages'.
 98:      */
 99:     public function setTitle($title) {
100:         $this->setString('title', $title);
101:     }
102: 
103:     /**
104:      * @return string Returns the current value of the <b>Title</b> option.
105:      */
106:     public function getTitle() {
107:         return $this->title;
108:     }
109:     
110:     /**
111:      * @return string Returns the content type output by this layout, i.e "text/html".
112:      */
113:     public function getContentType() {
114:         return "text/html";
115:     }
116:     
117:     /**
118:      * @param LoggerLoggingEvent $event
119:      * @return string
120:      */
121:     public function format(LoggerLoggingEvent $event) {
122:         $sbuf = PHP_EOL . "<tr>" . PHP_EOL;
123:     
124:         $sbuf .= "<td>";
125:         $sbuf .= round(1000 * $event->getRelativeTime());
126:         $sbuf .= "</td>" . PHP_EOL;
127:     
128:         $sbuf .= "<td title=\"" . $event->getThreadName() . " thread\">";
129:         $sbuf .= $event->getThreadName();
130:         $sbuf .= "</td>" . PHP_EOL;
131:     
132:         $sbuf .= "<td title=\"Level\">";
133:         
134:         $level = $event->getLevel();
135:         
136:         if ($level->equals(LoggerLevel::getLevelDebug())) {
137:             $sbuf .= "<font color=\"#339933\">$level</font>";
138:         } else if ($level->equals(LoggerLevel::getLevelWarn())) {
139:             $sbuf .= "<font color=\"#993300\"><strong>$level</strong></font>";
140:         } else {
141:             $sbuf .= $level;
142:         }
143:         $sbuf .= "</td>" . PHP_EOL;
144:     
145:         $sbuf .= "<td title=\"" . htmlentities($event->getLoggerName(), ENT_QUOTES) . " category\">";
146:         $sbuf .= htmlentities($event->getLoggerName(), ENT_QUOTES);
147:         $sbuf .= "</td>" . PHP_EOL;
148:     
149:         if ($this->locationInfo) {
150:             $locInfo = $event->getLocationInformation();
151:             $sbuf .= "<td>";
152:             $sbuf .= htmlentities($locInfo->getFileName(), ENT_QUOTES). ':' . $locInfo->getLineNumber();
153:             $sbuf .= "</td>" . PHP_EOL;
154:         }
155: 
156:         $sbuf .= "<td title=\"Message\">";
157:         $sbuf .= htmlentities($event->getRenderedMessage(), ENT_QUOTES);
158:         $sbuf .= "</td>" . PHP_EOL;
159: 
160:         $sbuf .= "</tr>" . PHP_EOL;
161:         
162:         if ($event->getNDC() != null) {
163:             $sbuf .= "<tr><td bgcolor=\"#EEEEEE\" style=\"font-size : xx-small;\" colspan=\"6\" title=\"Nested Diagnostic Context\">";
164:             $sbuf .= "NDC: " . htmlentities($event->getNDC(), ENT_QUOTES);
165:             $sbuf .= "</td></tr>" . PHP_EOL;
166:         }
167:         return $sbuf;
168:     }
169: 
170:     /**
171:      * @return string Returns appropriate HTML headers.
172:      */
173:     public function getHeader() {
174:         $sbuf = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">" . PHP_EOL;
175:         $sbuf .= "<html>" . PHP_EOL;
176:         $sbuf .= "<head>" . PHP_EOL;
177:         $sbuf .= "<title>" . $this->title . "</title>" . PHP_EOL;
178:         $sbuf .= "<style type=\"text/css\">" . PHP_EOL;
179:         $sbuf .= "<!--" . PHP_EOL;
180:         $sbuf .= "body, table {font-family: arial,sans-serif; font-size: x-small;}" . PHP_EOL;
181:         $sbuf .= "th {background: #336699; color: #FFFFFF; text-align: left;}" . PHP_EOL;
182:         $sbuf .= "-->" . PHP_EOL;
183:         $sbuf .= "</style>" . PHP_EOL;
184:         $sbuf .= "</head>" . PHP_EOL;
185:         $sbuf .= "<body bgcolor=\"#FFFFFF\" topmargin=\"6\" leftmargin=\"6\">" . PHP_EOL;
186:         $sbuf .= "<hr size=\"1\" noshade>" . PHP_EOL;
187:         $sbuf .= "Log session start time " . strftime('%c', time()) . "<br>" . PHP_EOL;
188:         $sbuf .= "<br>" . PHP_EOL;
189:         $sbuf .= "<table cellspacing=\"0\" cellpadding=\"4\" border=\"1\" bordercolor=\"#224466\" width=\"100%\">" . PHP_EOL;
190:         $sbuf .= "<tr>" . PHP_EOL;
191:         $sbuf .= "<th>Time</th>" . PHP_EOL;
192:         $sbuf .= "<th>Thread</th>" . PHP_EOL;
193:         $sbuf .= "<th>Level</th>" . PHP_EOL;
194:         $sbuf .= "<th>Category</th>" . PHP_EOL;
195:         if ($this->locationInfo) {
196:             $sbuf .= "<th>File:Line</th>" . PHP_EOL;
197:         }
198:         $sbuf .= "<th>Message</th>" . PHP_EOL;
199:         $sbuf .= "</tr>" . PHP_EOL;
200: 
201:         return $sbuf;
202:     }
203: 
204:     /**
205:      * @return string Returns the appropriate HTML footers.
206:      */
207:     public function getFooter() {
208:         $sbuf = "</table>" . PHP_EOL;
209:         $sbuf .= "<br>" . PHP_EOL;
210:         $sbuf .= "</body></html>";
211: 
212:         return $sbuf;
213:     }
214: }
215: 
Apache log4php API documentation generated by ApiGen 2.8.0