Logger.js
Summary
Contains Logger class.
This is part of Troika.ASP Framework - web development MVC framework for ASP 3.0.
Please visit www.troika-asp.com for more details.
Version: $Revision: 1.3 $
Author: Pavel Chuchev pav@troika-asp.com
|
Class Summary
|
| Logger |
Logger class logs messages to a text file.. |
Logger.FILTER_NONE = - 1;
Logger.FILTER_ERROR = 0;
Logger.FILTER_WARNING = 1;
Logger.FILTER_INFO = 2;
function Logger(config) {
var fileName = config.logger.fileName;
var maxSize = config.logger.maxSize;
var generations = config.logger.generations;
var logLevel = Logger[config.logger.logLevel];
var fso = new ActiveXObject("Scripting.FileSystemObject");
var increment = 0;
this.error = function (err) {
if (logLevel >= Logger.FILTER_ERROR) {
return log("E", objToString(err));
}
};
this.warning = function (err) {
if (logLevel >= Logger.FILTER_WARNING) {
return log("W", objToString(err));
}
};
this.info = function (msg) {
if (logLevel >= Logger.FILTER_INFO && msg) {
return log("I", msg);
}
};
function objToString(o) {
var result = "";
if (typeof (o) == "object") {
result = "\r\n" + o.toString();
}
else {
result = o;
}
return result;
}
function getTranId() {
var now = new Date();
increment++;
if (increment > 9999) {
increment = 0;
}
return now.getTime() + "-" + increment;
}
function createLogMessage(transId, level, msg) {
var now = "[" + new Date() + "]";
level = " {" + level + "} ";
return now + level + "TRAN ID - " + transId + level + msg;
}
function log(level, msg) {
var result = getTranId();
msg = createLogMessage(result, level, msg);
var failed = 0;
var reason = "";
var forAppending = 8;
while (failed < 100 && failed != - 1) {
try {
var file = fso.FileExists(fileName) ? fso.OpenTextFile(fileName, forAppending, true) : fso.CreateTextFile(fileName);
file.WriteLine(msg);
file.Close();
failed = - 1;
}
catch (e) {
failed++;
reason = e.description;
}
}
if (failed == - 1) {
checkLogSize();
}
else {
throw new Error("File IOException: " + reason + "\r\nfileName: " + fileName);
}
return result;
}
function checkLogSize() {
if (!maxSize || !generations) {
return;
}
var file = fso.GetFile(fileName);
if (file.size >= (maxSize * 1024)) {
for (var i = generations; i > 0; i--) {
var oldFileName = fileName;
if ((i - 1) > 0) {
oldFileName += "." + (i - 1);
}
if (fso.FileExists(oldFileName)) {
var newFileName = fileName + "." + i;
if (fso.FileExists(newFileName)) {
fso.DeleteFile(newFileName);
}
fso.MoveFile(oldFileName, newFileName);
}
}
}
}
}
www.troika-asp.com
Documentation generated on Sun Jun 15 17:59:32 2008