########################################## The Implement of Logger.# # @author Xinyang Shao(daniel)######################################### implement Logger; include "sys.m";include "draw.m";include "logger.m"; sys : Sys;fileName : string;FD : import sys;log_fd : ref Sys->FD; init() { fileName = DEFAULT_LOG_FILE_NAME; sys = load Sys Sys->PATH;} setFileName(newFileName : string) { fileName = newFileName; log_fd = nil; scrlogInfo("Log file changing to : \"" + fileName + "\"");} bl() : int{ return blankLine();} sln() : int{ return sepaLine();} li(message : string) : int{ return logInfo(message);} l(message : string, property : int) : int{ return log(message, property);} sbl() : int{ return scrBlankLine();} ssl() : int{ return scrSepaLine();} sli(message : string) : int{ return scrlogInfo(message);} sl(message : string, property : int) : int{ return scrlog(message, property);} scrlogInfo(message : string) : int{ return scrlog(message, INFO);} scrlog(message : string, property : int) : int{ case property { INFO => sys->print(" [INFO] "); WARN => sys->print(" +[WARNING] "); ERROR => sys->print("**[ERROR] "); } sys->print("%s\n", message); return OK;} scrBlankLine() : int{ scrlog("\n", BLANK); return OK;} scrSepaLine() : int{ scrlog("\n ------------------------------------------\n", BLANK); return OK;} logInfo(message : string) : int{ return log(message, INFO);} log(message : string, property : int) : int{ if(log_fd == nil) { log_fd = sys->open(fileName, Sys->OWRITE); if(log_fd == nil) { # File Not Found log_fd = sys->create(fileName, sys->ORDWR, 8r777); scrlogInfo("Explicit-name log file \"" + fileName + "\" NOT found. Automatically creating..."); logInfo("\n ------------------------------------------\n"); if(log_fd == nil) { scrlogInfo("Log file \"" + fileName + "\" creation failed."); return ERR; } else { scrlogInfo("Log file \"" + fileName + "\" creation successful"); } } } case property { INFO => sys->fprint(log_fd, " [INFO] "); WARN => sys->fprint(log_fd, " +[WARNING] "); ERROR => sys->fprint(log_fd, "**[ERROR] "); } sys->fprint(log_fd, "%s\n", message); return OK;} blankLine() : int{ log("\n", BLANK); return OK;} sepaLine() : int{ log("\n ------------------------------------------\n", BLANK); return OK;}
########################################
#
# The Implement of Logger.
#
# @author Xinyang Shao(daniel)
#
########################################
implement Logger;
include "sys.m";
include "draw.m";
include "logger.m";
sys : Sys;
fileName : string;
FD : import sys;
log_fd : ref Sys->FD;
init()
{
fileName = DEFAULT_LOG_FILE_NAME;
sys = load Sys Sys->PATH;
}
setFileName(newFileName : string)
{
fileName = newFileName;
log_fd = nil;
scrlogInfo("Log file changing to : \"" + fileName + "\"");
}
bl() : int
{
return blankLine();
}
sln() : int
{
return sepaLine();
}
li(message : string) : int
{
return logInfo(message);
}
l(message : string, property : int) : int
{
return log(message, property);
}
sbl() : int
{
return scrBlankLine();
}
ssl() : int
{
return scrSepaLine();
}
sli(message : string) : int
{
return scrlogInfo(message);
}
sl(message : string, property : int) : int
{
return scrlog(message, property);
}
scrlogInfo(message : string) : int
{
return scrlog(message, INFO);
}
scrlog(message : string, property : int) : int
{
case property
{
INFO => sys->print(" [INFO] ");
WARN => sys->print(" +[WARNING] ");
ERROR => sys->print("**[ERROR] ");
}
sys->print("%s\n", message);
return OK;
}
scrBlankLine() : int
{
scrlog("\n", BLANK);
return OK;
}
scrSepaLine() : int
{
scrlog("\n ------------------------------------------\n", BLANK);
return OK;
}
logInfo(message : string) : int
{
return log(message, INFO);
}
log(message : string, property : int) : int
{
if(log_fd == nil) {
log_fd = sys->open(fileName, Sys->OWRITE);
if(log_fd == nil) { # File Not Found
log_fd = sys->create(fileName, sys->ORDWR, 8r777);
scrlogInfo("Explicit-name log file \"" + fileName + "\" NOT found. Automatically creating...");
logInfo("\n ------------------------------------------\n");
if(log_fd == nil) {
scrlogInfo("Log file \"" + fileName + "\" creation failed.");
return ERR;
}
else {
scrlogInfo("Log file \"" + fileName + "\" creation successful");
}
}
}
case property
{
INFO => sys->fprint(log_fd, " [INFO] ");
WARN => sys->fprint(log_fd, " +[WARNING] ");
ERROR => sys->fprint(log_fd, "**[ERROR] ");
}
sys->fprint(log_fd, "%s\n", message);
return OK;
}
blankLine() : int
{
log("\n", BLANK);
return OK;
}
sepaLine() : int
{
log("\n ------------------------------------------\n", BLANK);
return OK;
}