Я хотел бы определить, регистрирует ли я только пользовательский текст или исключение.
Мой логер выглядит так:
using System;
using System.IO;
using System.Reflection;
using System.Windows;
using System.Xml.Serialization;
using Ultra_Script_WPF.User_Settings;
public class LogWriter
{
private string m_exePath = string.Empty;
public LogWriter(string logMessage)
{
LogWrite(logMessage);
}
public void LogWrite(string logMessage)
{
if (File.Exists("settings.xml"))
{
XmlSerializer xs = new XmlSerializer(typeof(Information));
using (FileStream read = new FileStream("settings.xml", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
Information info = (Information)xs.Deserialize(read);
string EnableLogCBox = info.EnableLogging;
bool? EnableLCBox = Convert.ToBoolean(EnableLogCBox);
if (EnableLCBox == true)
{
m_exePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
try
{
using (StreamWriter w = File.AppendText(m_exePath + "\\" + "log.txt"))
{
Log(logMessage, w);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
}
}
public void Log(string logMessage, TextWriter txtWriter)
{
try
{
txtWriter.Write("\r\n");
txtWriter.Write("{0} {1}", DateTime.Now.ToLongTimeString(),
DateTime.Now.ToLongDateString());
txtWriter.Write(" : {0}", logMessage);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
Когда регистрируется исключение, он выглядит так:
19:41:04 čtvrtek 26. března 2020 : Cryptography error (Mostly wrong password): System.Security.Cryptography.CryptographicException: Výplň je neplatná a nelze ji odebrat.
v System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode paddingMode, Boolean fLast)
v System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount)
v System.Security.Cryptography.CryptoStream.Read(Byte[] buffer, Int32 offset, Int32 count)
v Ultra_Script_WPF.startup_password_prompt.OK_Button_Click(Object sender, RoutedEventArgs e) v C:\Users\Honza\Desktop\Prográmko\Ultra_Script\Projects\Ultra_Script_GIT\startup_password_prompt.xaml.cs:řádek 105
Но мне не нужны средние строки, я хочу записывать только первую и последнюю запись с ошибкой, местоположением и строкой.
Могу ли я как-то определить, регистрирует ли я исключение внутри самого класса logwriter? Так что я могу сделать другое сообщение журнала для исключения и для пользовательского текста