/[cvs]/nfo/php/libs/org.netfrag.app/Tracer.php
ViewVC logotype

Annotation of /nfo/php/libs/org.netfrag.app/Tracer.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.4 - (hide annotations)
Tue Apr 8 17:57:29 2003 UTC (21 years, 3 months ago) by joko
Branch: MAIN
CVS Tags: HEAD
Changes since 1.3: +6 -2 lines
minor fix: increased width of debug-box

1 joko 1.1 <?php
2    
3     /**
4     * This file contains some core functions extending php.
5     * Topic: basic runtime tracing
6     *
7     * @author Andreas Motl <andreas.motl@ilo.de>
8     * @package org.netfrag.app
9     * @name Tracer
10     *
11     */
12    
13     /**
14 joko 1.4 * $Id: Tracer.php,v 1.3 2003/04/06 04:25:41 joko Exp $
15 joko 1.2 *
16     * $Log: Tracer.php,v $
17 joko 1.4 * Revision 1.3 2003/04/06 04:25:41 joko
18     * + function get_last
19     * + function out_plain_last10
20     *
21 joko 1.3 * Revision 1.2 2003/04/05 21:19:38 joko
22     * + function event
23     * - function warn
24     * - function info
25     *
26 joko 1.2 * Revision 1.1 2003/04/04 02:17:22 joko
27     * initial commit
28 joko 1.1 *
29     *
30     */
31    
32    
33     /**
34     * --- Tracer
35     *
36     * @author Andreas Motl <andreas.motl@ilo.de>
37     * @copyright (c) 2003 - All Rights reserved.
38     * @license GNU LGPL (GNU Lesser General Public License)
39     *
40     * @link http://www.netfrag.org/~joko/
41     * @link http://www.gnu.org/licenses/lgpl.txt
42     *
43     * @package org.netfrag.app
44     * @name Tracer
45     *
46     *
47     */
48    
49    
50 joko 1.2 // lowlevel (just calls 'Dumper')
51 joko 1.1 Exporter::export_symbol('Tracer', array('add' => 'trace'));
52 joko 1.2 // highlevel (draws colored boxes)
53     //Exporter::export_symbols('Tracer', array('warn', 'info'));
54 joko 1.1
55    
56     class Tracer {
57    
58 joko 1.3 function get_last($x) {
59     global $_TRACE;
60     return array_slice($_TRACE, -$x);
61     }
62    
63 joko 1.1 function box($dom_id = 'errorbox') {
64    
65     // FIXME: ie/mozilla?
66     $errblock = html_div();
67     $errblock->set_id($dom_id);
68 joko 1.3
69     // V1
70     //$errblock->set_style('display:none;');
71     // V2
72     //$errblock->set_style('visibility:hidden; float:none; left: 50%; position:absolute; z-index:1;');
73     $errblock->set_style('visibility:hidden; position:absolute; z-index:1; left:5px; background: #eeeeee; margin-top:30px; padding:5px; border:1px solid black;');
74 joko 1.1
75 joko 1.3 //$errblock->add( html_br(), html_br() );
76 joko 1.1 $errblock->add( html_b( "Events: (# " . sizeof($_TRACE) . ")" ) );
77    
78     // FIXME: just use the last 50 entries...
79 joko 1.3 $lastX = Tracer::get_last(50);
80     foreach ($lastX as $error) {
81 joko 1.1 $errblock->add( $error );
82     }
83     //$errblock->add($_TRACE);
84    
85 joko 1.3 return $errblock;
86     }
87    
88     function out_plain_last10($dom_id) {
89     $errblock = html_div();
90     $errblock->set_id($dom_id);
91     $errblock->set_style('display:none;');
92     $lastX = Tracer::get_last(10);
93     $errblock->add( join("\n---\n", $lastX) );
94 joko 1.1 return $errblock;
95     }
96    
97     function add($payload = null) {
98     global $_TRACE;
99    
100     // V1 - array
101     //if (is_array($payload)) { $payload = join('<br/>', $payload); }
102     if (!is_array($_TRACE)) { $_TRACE = array(); }
103     array_push($_TRACE, $payload);
104    
105     // V2 - container
106     //if (!$_TRACE) { $_TRACE = container(); }
107     //$_TRACE->add($payload);
108    
109     }
110 joko 1.2
111     function event($args = array()) {
112    
113     //print "event!!!<br/>";
114     //print Dumper($args);
115    
116     $type = $args[type];
117     $code = $args[code];
118     $error = $args[error];
119     $payload = $args[payload];
120    
121     switch ($type) {
122     case 'full':
123     $output_order = array( 'message', 'component', 'file', 'line', 'level' );
124     break;
125     case 'medium':
126     $output_order = array( 'message', 'level', 'file', 'line' );
127     break;
128     default:
129     $output_order = array( 'message', 'level' );
130     break;
131     }
132    
133     // dispatch color by level
134     if ($code <= 8) {
135     $color = '#eeeeee';
136     } elseif ($code == 512) {
137     $color = 'orange';
138     } elseif ($code == 1024) {
139     $color = 'yellow';
140     } else {
141     $color = 'white';
142     }
143    
144     $buf = array();
145     //print "<hr/><b><font color=\"red\">ERROR:</font></b><br/>";
146 joko 1.4 array_push($buf, "<div style=\"width:640px;background:$color; margin:4px; border:1px black groove; padding:2px;\"><b><font color=\"red\">Event:</font></b> [$code]<br/>");
147 joko 1.2
148     // 1. dump of error object
149     if (is_array($error)) {
150     foreach ($output_order as $key) {
151     array_push($buf, "<b>$key:</b> $error[$key]<br/>");
152     }
153     }
154     // 2. additional payload
155     if (is_array($payload)) {
156     array_push($buf, join('<br/>', $payload) );
157     }
158    
159     array_push($buf, "</div><br/>\n");
160     $out = join("\n", $buf);
161    
162     Tracer::add($out);
163    
164     return $out;
165    
166     }
167    
168 joko 1.1
169     }
170    
171     ?>

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed