Error Logging

Logging is an importten and necessory feature in all languages. Logging is used for tracking Error ,Performance Logs, DB Logs.

Error Logs: Is used for tracking different errors in a loged file.
Performance Logs: Is used for tracking performance logs in a File for doing Performance Testing.
DB Logs : Is used for logging DB Transactions.

ETC...

Here i have showing different options saving Error logs in a file.

First we need to create a Enum for ..

//- ALL - (Lowest) All possible logging INFO has been turned on.
//- INFO - This level refers to logging the INFO stemming from application flow.

//- ERROR - This level means logging the error message related to the
// application error.
//- WARN - This level means that a warning message related to the
// application needs immediate attention because of unexpected behavior.
//- OFF - (Highest) All logging INFO has been turned off.
 

public enum LogLevel

{
ALL,
 DATA,
 INFO,
 ERROR,
 WARNING,
 OFF,
}
This enum can be used for Logging different logs



public  class Log
{ static private LogLevel CurrentLogLevel = LogLevel.ERROR;

private static string GetDatedFileName(string extension)
{     string basename = GetBaseName();     string currentDate = DateTime.Now.ToString("MM_dd_yy");     return basename + "_" + currentDate + "." + extension;
}

static Log()
{
  
//TODO: get configured log level from registry
    string logType = System.Configuration.ConfigurationManager.AppSettings.Get("LOG").ToString();
switch (logType)
{
   
case "ALL":
   case "DATA":
       CurrentLogLevel = LogLevel.ALL;                        break;
   case "INFO":
       CurrentLogLevel = LogLevel.INFO;                        break;
   case "WARNING":
       CurrentLogLevel = LogLevel.WARNING;
   break;
   case "OFF":
       CurrentLogLevel = LogLevel.OFF;                        break;
   case "ERROR":
    default:
       CurrentLogLevel = LogLevel.ERROR;    break;
}

Stream myFile = File.Open(GetDatedFileName("log"), FileMode.Append, FileAccess.Write);
Trace.Listeners.Add(new TextWriterTraceListener(myFile));

}

private static void writeToLog(string message, LogLevel severity)
{

Trace.WriteLine(System.
      DateTime.Now.ToLongTimeString() + "\t" + severity.ToString() + "\t" + message);

Trace.Flush();

}
private static string GetBaseName()
{

   
string[] tempPath = Environment.GetCommandLineArgs();
   string temp = tempPath[tempPath.GetUpperBound(0)];    return Path.GetFileNameWithoutExtension(@temp);
}


public static void Data(string message)
{ // Write all log
if (LogLevel.ALL == CurrentLogLevel || LogLevel.DATA == CurrentLogLevel || LogLevel.ALL == CurrentLogLevel)

writeToLog(message, LogLevel.DATA);

}

public static void Info(string message)
{ // Write all log
if (LogLevel.ERROR == CurrentLogLevel || LogLevel.WARNING == CurrentLogLevel || LogLevel.INFO == CurrentLogLevel || LogLevel.ALL == CurrentLogLevel)

writeToLog(message, LogLevel.INFO);

}

public static void Error(string message)
{
 
// Write only error log
if (LogLevel.ERROR == CurrentLogLevel || LogLevel.WARNING == CurrentLogLevel || LogLevel.ALL == CurrentLogLevel)

writeToLog(message, LogLevel.ERROR);
}

public static void Warning(string message)
{ // Write all error log or warning log
if (LogLevel.WARNING == CurrentLogLevel || LogLevel.ALL == CurrentLogLevel)
writeToLog(message, LogLevel.WARNING);
}

}

We can call this method from code like.


Log.Info("Informational message");

Log.Error("Error message");

Log.Warning("Warning message");



No comments:

Post a Comment