how to save exception in txt file?
Since you want to save the exception to C:\Error.txt
, you don't need Directory.Exists
, Directory.CreateDirectory
, or Server.MapPath("~/Error.txt")
. You can simply use StreamWriter like this:
string filePath = @"C:\Error.txt";Exception ex = ...using( StreamWriter writer = new StreamWriter( filePath, true ) ){ writer.WriteLine( "-----------------------------------------------------------------------------" ); writer.WriteLine( "Date : " + DateTime.Now.ToString() ); writer.WriteLine(); while( ex != null ) { writer.WriteLine( ex.GetType().FullName ); writer.WriteLine( "Message : " + ex.Message ); writer.WriteLine( "StackTrace : " + ex.StackTrace ); ex = ex.InnerException; }}
The above code will create C:\Error.txt
if it doesn't exist, or append C:\Error.txt
if it already exists.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ErrorLoggingSample { class Program { static void Main(string[] args) { try { string str = string.Empty; if (string.IsNullOrEmpty(str)) { throw new Exception("Wrong Data"); } } catch (Exception ex) { ErrorLogging(ex); ReadError(); } } public static void ErrorLogging(Exception ex) { string strPath = @"D:\Rekha\Log.txt"; if (!File.Exists(strPath)) { File.Create(strPath).Dispose(); } using (StreamWriter sw = File.AppendText(strPath)) { sw.WriteLine("=============Error Logging ==========="); sw.WriteLine("===========Start============= " + DateTime.Now); sw.WriteLine("Error Message: " + ex.Message); sw.WriteLine("Stack Trace: " + ex.StackTrace); sw.WriteLine("===========End============= " + DateTime.Now); } } public static void ReadError() { string strPath = @"D:\Rekha\Log.txt"; using (StreamReader sr = new StreamReader(strPath)) { string line; while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } } } } }
I use that one
catch (Exception e){ new MessageWriteToFile(e).WriteToFile();}public class MessageWriteToFile{ private const string Directory = "C:\\AppLogs"; public string Message { get; set; } public Exception Exception { get; set; } public string DefaultPath { get { var appName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name; var folder = $"{Directory}\\{appName}"; if (!System.IO.Directory.Exists(folder)) { System.IO.Directory.CreateDirectory(folder); } var fileName = $"{DateTime.Today:yyyy-MM-dd}.txt"; return $"{Directory}\\{appName}\\{fileName}"; } } public MessageWriteToFile(string message) { Message = message; } public MessageWriteToFile(Exception ex) { Exception = ex; } public bool WriteToFile(string path = "") { if (string.IsNullOrEmpty(path)) { path = DefaultPath; } try { using (var writer = new StreamWriter(path, true)) { writer.WriteLine("-----------------------------------------------------------------------------"); writer.WriteLine("Date : " + DateTime.Now.ToString(CultureInfo.InvariantCulture)); writer.WriteLine(); if (Exception != null) { writer.WriteLine(Exception.GetType().FullName); writer.WriteLine("Source : " + Exception.Source); writer.WriteLine("Message : " + Exception.Message); writer.WriteLine("StackTrace : " + Exception.StackTrace); writer.WriteLine("InnerException : " + Exception.InnerException?.Message); } if (!string.IsNullOrEmpty(Message)) { writer.WriteLine(Message); } writer.Close(); } } catch (Exception) { return false; } return true; }}