Files
Facilitor/APPL/Shared/logger.inc
Peter Feij 413498318a 0-versie
svn path=/Website/trunk/; revision=6
2009-10-05 06:44:06 +00:00

200 lines
7.4 KiB
C++

<script language="javascript" RUNAT="Server">
// SESSION must be started like: http://dit03/facilitorwork/dijk?logging
// param '&logging=getal'
//
// geen waarde-->In ieder geval serverside loggen zoals nu ook-->Identiek aan getal==1
// getal is bitwise:
// &1->serverside loggen
// &2->serverside logwindow openen op client
// &4->clientside loggen (alleen zinvol samen met 8 of 16)
// &8->clientside logwindow openen op client (impliciet door 4)
// &16->clientside loginfo in serverlog plaatsen (nog niet geimplementeerd)
//
//Bij het inlogscherm inloggen met '**' is gelijk aan logging=255 (dekt 16+8+4+2+1)
// Example (from GLOBAL.ASA)
// CheckForLogging(Request.QueryString("LOGGING"))
// of CheckForLogging(null, logcode)
function CheckForLogging(qstring, logcode)
{
if (qstring && qstring.Count()>0)
{
qstring = ""+qstring; // Force string
lg = parseInt(qstring, 10);
if (qstring=="" || isNaN(lg)) lg = 1; // default
Session("logging") = lg;
Response.Cookies("Facilitor")("logging") = lg;
}
else
if (arguments.length>1)
{
Session("logging") = logcode;
Response.Cookies("Facilitor")("logging") = logcode;
}
}
function padout(number) { return (number < 10) ? '0' + number : number; }
function __LogAppend(s)
{
if (Session("logging")&1) // Can be set through global.asa
{
__DoLogAppend(s)
}
}
// Als de Normale log maar dan geforceerd, onafhankelijk van logging settings
function __DoLogAppend(s)
{
try
{
var objFile, objText
var lPath = Server.MapPath(rooturl + "/Temp/log_"+Session("customerId")+".html");
objFile = Server.CreateObject("Scripting.FileSystemObject");
var IsNew = (!objFile.FileExists(lPath))
objText = objFile.OpenTextFile(lPath, 8, true, 0);
objText.WriteLine(s);
objText.Close();
objText = null;
objFile = null;
}
catch(e)
{ // Waarschijnlijk een permission denied omdat twee processen tegelijk proberen te schrijven
}
}
function __Log(s, optionalCaller) {
if (Session("logging")&1) // Can be set through global.asa
{
__DoLog(s, "undefined", optionalCaller)
}
}
// Als de Normale log maar dan geforceerd, onafhankelijk van logging settings
// optionalColor bijvoorbeeld "#FF0000" voor rood
// __DoLog("Very bad situation", "#FF0000")
function __DoLog(s, optionalColor, optionalCaller) {
try {
var objFile, objText
var lPath = Server.MapPath(rooturl + "/Temp/log_"+Session("customerId")+".html");
//var lPath = "C:/InetPub/wwwroot/FacilitorWork/Temp/log_"+Session("customerId")+".html";
objFile = Server.CreateObject("Scripting.FileSystemObject");
var IsNew = (!objFile.FileExists(lPath))
objText = objFile.OpenTextFile(lPath, 8, true, 0); // 8 ForAppending, true is create
if (IsNew)
{
objText.WriteLine("<head>");
objText.WriteLine("<META HTTP-EQUIV=\"Pragma\" CONTENT=\"no-cache\">");
objText.WriteLine("<META HTTP-EQUIV=\"Expires\" CONTENT=\"-1\">");
objText.WriteLine("<style>");
objText.WriteLine("td {");
objText.WriteLine(" font-family: Verdana;");
objText.WriteLine(" font-size: smaller;");
objText.WriteLine(" font-weight: normal;");
objText.WriteLine(" color: #000000;");
objText.WriteLine(" text-decoration: none;");
objText.WriteLine(" padding-bottom: 2px;");
objText.WriteLine(" padding-top: 2px;");
objText.WriteLine(" padding-left: 2px;");
objText.WriteLine(" padding-right: 2px;");
objText.WriteLine(" background-color: #D6D8E8;");
objText.WriteLine("}");
objText.WriteLine("</style>");
objText.WriteLine("<title>*Facilitor server ASP/SQL logger (c) SG|facilitor bv</title>");
objText.WriteLine("</head>");
objText.WriteLine("<form action=./../appl/shared/wisLog.asp>")
objText.WriteLine(" <input type=submit accesskey=\"X\" value=\"CLEAR this logfile (Alt+x)\">");
objText.WriteLine("</form>");
objText.WriteLine("<table>"); // The closing </table> is never placed. IE doesn't care
objText.WriteLine("<tr><td colspan='3' align='center'>Logging was reset");
}
var now = new Date();
var sNow = now.getYear()+"/"+padout(now.getMonth()+1)+"/"+padout(now.getDate())+"&nbsp;"+
padout(now.getHours())+":"+padout(now.getMinutes())+":"+padout(now.getSeconds())+
"."+now.getMilliseconds();
var x = String(Request.ServerVariables("PATH_TRANSLATED"));
var y = String(Request.ServerVariables("APPL_PHYSICAL_PATH")); // Zoveel gaan we er af slopen
x = x.substring(y.length);
if (optionalCaller == "undefined")
clr = __Log.caller;
else
clr = optionalCaller;
if (clr) // caller is a reference to the caller's function definition/body, not the callers object/instance
{
cl = " {"+clr.toString().match(/function\s*(\w*)/)[1]+"}";
if (cl == " {}" && clr.caller) // Anonieme functie?
{
cl = " {"+clr.caller.toString().match(/function\s*(\w*)/)[1]+"}";
}
}
else
cl = "" // {global}
x = x + cl;
var ip = Request.ServerVariables("REMOTE_ADDR") + "";
// while (ip.indexOf(".") >= 0)
// ip = ip.substring(1)
ip = Request.ServerVariables("REMOTE_USER") + " " + ip + " " + Request.ServerVariables("QUERY_STRING")
s = ""+s; // Force to string type
if (optionalColor != "undefined")
{
s = "<div style=\"background-color: "+optionalColor+";\">"+s+"</div>";
}
objText.WriteLine("</td></tr><tr><td valign='top' title='"+ ip + "'>" + user_key + " "+sNow+"<br>" + x + "</td><td>" +s.replace(/INSERT /i,"<b>INSERT</b> ").replace(/UPDATE /i,"<b>UPDATE</b> ").replace(/DELETE /i,"<b>DELETE</b> ").replace(/BEGIN /i,"<b>BEGIN</b> ")+"");
objText.Close();
objText = null;
objFile = null;
}
catch(e)
{ // Waarschijnlijk een permission denied omdat twee processen tegelijk proberen te schrijven
debugger;
}
}
// Log alle Request.Form variabelen in een tabel onvoorwaardelijk
function __DoLogForm(optionalColor)
{
var sLog = "Request.Form ("+Request.Form.Count+" items):";
if (optionalColor != "undefined")
{
sLog = "<div style=\"background-color: "+optionalColor+";\">"+sLog+"</div>";
}
sLog += "<table>";
var i;
for (i=1; i<=Request.Form.Count; i++)
{
sLog += "<tr><td>" + Request.Form.key(i)
if (Request.Form(i).Count>1)
sLog += "("+Request.Form(i).Count+"x)"
sLog += "<td>"
var j;
for (j=1; j<=Request.Form(i).Count; j++)
{
if (j>1)
sLog += "<br>";
sLog += Request.Form.item(i)(j);
}
sLog += "</td></tr>";
}
sLog += "</table>";
__DoLog(sLog);
}
function __LogForm()
{
if (!(Session("logging")&1)) return; // Don't bother
__DoLogForm();
}
</SCRIPT>