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