Normally when we do coding in our program we usually do the try catch finally statement for exception handling. Then an exception might occur for your database related operation or some system level operation. So when the exception happens we would display the exception message like:
"ex. message" or writing the "throw exception".
Now for a software project in production if an exception happens and if we include in the exception error handling log the inner exceptions then we can easily identify the specific error and where it got stuck. Because the end user can see the error but for fixing that exception issue the developer should know the details of that exception. So for that it's a very good way to keep log the program exception.
Now in this article I will create a class library where there will be 2 methods. After that I will make this class library a "dll" where we can use this dll in multiple projects.
- CreateErrorMessage()
This method is for preparing the error message derived from the Exception Object
- LofFileWrite()
This method is for writting the Log file with message parameter
Now let's start to create the program.
Step 1:
First create a Windows class library project. Give it the name "ErrorHandling":
Step 2:
Now I will create the first method. That is "CreateErrorMessage".
The coding is
public static string CreateErrorMessage(Exception serviceException)
{
StringBuilder messageBuilder = new StringBuilder();
try
{
messageBuilder.Append("The Exception is:-");
messageBuilder.Append("Exception :: " + serviceException.ToString());
if (serviceException.InnerException != null)
{
messageBuilder.Append("InnerException :: " + serviceException.InnerException.ToString());
}
return messageBuilder.ToString();
}
catch
{
messageBuilder.Append("Exception:: Unknown Exception.");
return messageBuilder.ToString();
}
}
I create the method as a static method so when we use the dll we don't need to create the object.
Step 3:
Now the 2nd method is:
public static void LogFileWrite(string message)
{
FileStream fileStream = null;
StreamWriter streamWriter = null;
try
{
string logFilePath = "c:\\LogError\\";
logFilePath = logFilePath + "ProgramLog" + "-" + DateTime.Today.ToString("yyyyMMdd") + "." + "txt";
if (logFilePath.Equals("")) return;
#region Create the Log file directory if it does not exists
DirectoryInfo logDirInfo = null;
FileInfo logFileInfo = new FileInfo(logFilePath);
logDirInfo = new DirectoryInfo(logFileInfo.DirectoryName);
if (!logDirInfo.Exists) logDirInfo.Create();
#endregion Create the Log file directory if it does not exists
if (!logFileInfo.Exists)
{
fileStream = logFileInfo.Create();
}
else
{
fileStream = new FileStream(logFilePath, FileMode.Append);
}
streamWriter = new StreamWriter(fileStream);
streamWriter.WriteLine(message);
}
finally
{
if (streamWriter != null) streamWriter.Close();
if (fileStream != null) fileStream.Close();
}
}
Now the final code of that class is:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ErrorHandiling
{
public class Class1
{
/// <summary>
/// This method is for preapare the error massage on base of Exception Object
/// </summary>
/// <param name="serviceException"></param>
/// <returns></returns>
public static string CreateErrorMessage(Exception serviceException)
{
StringBuilder messageBuilder = new StringBuilder();
try
{
messageBuilder.Append("The Exception is:-");
messageBuilder.Append("Exception :: " + serviceException.ToString());
if (serviceException.InnerException != null)
{
messageBuilder.Append("InnerException :: " + serviceException.InnerException.ToString());
}
return messageBuilder.ToString();
}
catch
{
messageBuilder.Append("Exception:: Unknown Exception.");
return messageBuilder.ToString();
}
}
/// <summary>
/// This method is for writting the Log file with message parameter
/// </summary>
/// <param name="message"></param>
public static void LogFileWrite(string message)
{
FileStream fileStream = null;
StreamWriter streamWriter = null;
try
{
string logFilePath = "c:\\LogError\\";
logFilePath = logFilePath + "ProgramLog" + "-" + DateTime.Today.ToString("yyyyMMdd") + "." + "txt";
if (logFilePath.Equals("")) return;
#region Create the Log file directory if it does not exists
DirectoryInfo logDirInfo = null;
FileInfo logFileInfo = new FileInfo(logFilePath);
logDirInfo = new DirectoryInfo(logFileInfo.DirectoryName);
if (!logDirInfo.Exists) logDirInfo.Create();
#endregion Create the Log file directory if it does not exists
if (!logFileInfo.Exists)
{
fileStream = logFileInfo.Create();
}
else
{
fileStream = new FileStream(logFilePath, FileMode.Append);
}
streamWriter = new StreamWriter(fileStream);
streamWriter.WriteLine(message);
}
finally
{
if (streamWriter != null) streamWriter.Close();
if (fileStream != null) fileStream.Close();
}
}
}
}
So here we have seen how these two methods handle the log maintenance for exceptions. Just build the application and we will get the 'dll' of the project.
In my next article I will explain how this "dll" can be used to log the exception and also in the logtext file what it looks like.
Conclusion: So in this method we know how to handle and log the Exception error in a text file.