/[dtapublic]/to_be_filed/webprojs/php_libraries/php_library/pamc_a/logging/log.inc
ViewVC logotype

Annotation of /to_be_filed/webprojs/php_libraries/php_library/pamc_a/logging/log.inc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 35 - (hide annotations) (download)
Sat Oct 8 23:35:33 2016 UTC (8 years, 2 months ago) by dashley
File size: 7458 byte(s)
Initial commit.
1 dashley 35 <?php
2     //********************************************************************************
3     //Copyright (C)2006 David T. Ashley
4     //********************************************************************************
5     //This program or source file is free software; you can redistribute it and/or
6     //modify it under the terms of the GNU General Public License as published by
7     //the Free Software Foundation; either version 2 of the License, or (at your
8     //option) any later version.
9     //
10     //This program or source file is distributed in the hope that it will
11     //be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
12     //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13     //GNU General Public License for more details.
14     //
15     //You may have received a copy of the GNU General Public License
16     //along with this program; if not, write to the Free Software
17     //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18     //********************************************************************************
19     //Dave Ashley, 01/06
20     //
21     //This source file is a wrapper for functions that emit information into the
22     //log files.
23     //
24     //Replaces unruly characters with the underscore.
25     //
26     function LOG_replace_unruly_chars($arg)
27     {
28     $allowed_chars = "abcdefghijklmnopqrstuvwxyz" .
29     "ABCDEFGHIJKLMNOPQRSTUVWXYZ" .
30     "0123456789" .
31     " .,_:;-+*/" .
32     "()[]";
33    
34     $len = strlen($arg);
35     $rv = "";
36    
37     for ($i = 0; $i < $len; $i++)
38     {
39     $c = substr($arg, $i, 1);
40    
41     if (strpos($allowed_chars, $c) === FALSE)
42     {
43     //The character involved isn't in the allowed set. Replace it with an underscore.
44     $rv .= "_";
45     }
46     else
47     {
48     //The character involved is allowed. Put it directly in the result.
49     $rv .= $c;
50     }
51     }
52    
53     return($rv);
54     }
55     //
56     //
57     //Writes environmental information to the log file that may be helpful in error or
58     //security debugging.
59     //
60     function LOG_log_environment($prefix)
61     {
62     //Copy the server arguments. Don't want to accidentally change something.
63     $tgt = $_SERVER;
64    
65     //Reset to first value.
66     reset($tgt);
67    
68     //Loop through, emitting args.
69     while (list($key, $val) = each($tgt))
70     {
71     syslog(
72     LOG_NOTICE,
73     $prefix
74     . "_SERVER[\""
75     . $key
76     . "\"]: "
77     . $val
78     );
79     }
80     //-----------------------------------------------------------------------
81     //Copy the environment arguments. Don't want to accidentally change something.
82     $tgt = $_ENV;
83    
84     //Reset to first value.
85     reset($tgt);
86    
87     //Loop through, emitting args.
88     while (list($key, $val) = each($tgt))
89     {
90     syslog(
91     LOG_NOTICE,
92     $prefix
93     . "_ENV[\""
94     . $key
95     . "\"]: "
96     . $val
97     );
98     }
99     //-----------------------------------------------------------------------
100     //Copy the request arguments. Don't want to accidentally change something.
101     $tgt = $_REQUEST;
102    
103     //Reset to first value.
104     reset($tgt);
105    
106     //Loop through, emitting args.
107     while (list($key, $val) = each($tgt))
108     {
109     syslog(
110     LOG_NOTICE,
111     $prefix
112     . "_REQUEST[\""
113     . $key
114     . "\"]: "
115     . $val
116     );
117     }
118     }
119     //
120     //
121     //Writes the debug backtrace information to the log file.
122     //
123     function LOG_log_debug_backtrace($prefix)
124     {
125     //Grab backtrace.
126     $bt = debug_backtrace();
127    
128     //Iterate through each element.
129     reset($bt);
130     $i=0;
131     while (list($key, $val) = each($bt))
132     {
133     //Spit the function name.
134     if (isset($val["function"]))
135     syslog(LOG_NOTICE, $prefix . "FUNCTION[" . sprintf("%02d", $i) . "]: " . $val["function"]);
136     else
137     syslog(LOG_NOTICE, $prefix . "No function name specified in traceback.");
138    
139     //Spit the file name.
140     if (isset($val["file"]))
141     syslog(LOG_NOTICE, $prefix . "FILE [" . sprintf("%02d", $i) . "]: " . $val["file"]);
142     else
143     syslog(LOG_NOTICE, $prefix . "No file name specified in traceback.");
144    
145     //Spit the line number.
146     if (isset($val["line"]))
147     syslog(LOG_NOTICE, $prefix . "LINE [" . sprintf("%02d", $i) . "]: " . $val["line"]);
148     else
149     syslog(LOG_NOTICE, $prefix . "No line number specified in traceback.");
150    
151     $i++;
152     }
153     }
154     //
155     //
156     //Writes a horizontal line to the log file.
157     //
158     function LOG_log_hline($prefix)
159     {
160     $val = $prefix;
161    
162     for ($i=0; $i<80; $i++)
163     {
164     $val .= "-";
165     }
166    
167     error_log($val);
168     }
169     //
170     //Emits "hard" error messages. An "error" for these purposes is a very unexpected event,
171     //such as not being able to connect to a database, conditions that should not
172     //occur, etc. This includes a backtrace.
173     //
174     function LOG_error_hard($msgstring)
175     {
176     $prefix = "PAMC_ERROR_HARD: ";
177    
178     //Sanitize the input string to allow only certain characters.
179     $msgstring = LOG_replace_unruly_chars($msgstring);
180    
181     //Open with a horizontal line.
182     LOG_log_hline($prefix);
183    
184     //Insert the message.
185     syslog(LOG_NOTICE, $prefix . $msgstring);
186    
187     //Do the backtrace.
188     LOG_log_debug_backtrace($prefix);
189    
190     //Log the environment.
191     LOG_log_environment($prefix);
192    
193     //Close with a horizontal line.
194     LOG_log_hline($prefix);
195     }
196     //
197     //Emits "soft" error messages. An "error" for these purposes is a very unexpected event,
198     //such as not being able to connect to a database, conditions that should not
199     //occur, etc. This does not include a backtrace.
200     //
201     function LOG_error_soft($msgstring)
202     {
203     $prefix = "PAMC_ERROR_SOFT: ";
204    
205     //Sanitize the input string to allow only certain characters.
206     $msgstring = LOG_replace_unruly_chars($msgstring);
207    
208     //Insert the message.
209     syslog(LOG_NOTICE, $prefix . $msgstring);
210     }
211     //
212     //Emits security messages. An "security" message is something security-related.
213     //
214     function LOG_security($msgstring)
215     {
216     $prefix = "PAMC_SECURITY: ";
217    
218     //Sanitize the input string to allow only certain characters.
219     $msgstring = LOG_replace_unruly_chars($msgstring);
220    
221     //Open with a horizontal line.
222     LOG_log_hline($prefix);
223    
224     //Insert the message.
225     syslog(LOG_NOTICE, $prefix . $msgstring);
226    
227     //Log the environment.
228     LOG_log_environment($prefix);
229    
230     //Close with a horizontal line.
231     LOG_log_hline($prefix);
232     }
233     //
234     //Emits alert messages. An "alert" message is something significant that one
235     //might want to look into.
236     //
237     function LOG_alert($msgstring)
238     {
239     $prefix = "PAMC_ALERT: ";
240    
241     //Sanitize the input string to allow only certain characters.
242     $msgstring = LOG_replace_unruly_chars($msgstring);
243    
244     //Insert the message.
245     syslog(LOG_NOTICE, $prefix . $msgstring);
246     }
247     //
248     //Emits informational messages. An "informational" message is just something ordinary
249     //that occurs.
250     //
251     function LOG_info($msgstring)
252     {
253     $prefix = "PAMC_INFO: ";
254    
255     //Sanitize the input string to allow only certain characters.
256     $msgstring = LOG_replace_unruly_chars($msgstring);
257    
258     //Insert the message.
259     syslog(LOG_NOTICE, $prefix . $msgstring);
260     }
261     ?>

dashley@gmail.com
ViewVC Help
Powered by ViewVC 1.1.25