0
.txt와 같이 중요한 것을 로그 파일에 기록하려고합니다. 이것을 위해 ErrorHandling 클래스를 만들었습니다. CSV 파일에서 오류 코드를 읽고 콘솔/GUI에 텍스트를 추가합니다. 이제 문제는, 다른 UserControls에서 오류 파일을 쓰고 싶지만 콘솔은 MainWindow에 있습니다. 어떻게하면 내 수업에서 출력 콘솔에 텍스트를 추가 할 수 있습니까?다른 UserControls에서 로그 파일을 작성하는 가장 좋은 방법
이것은 내 ErrorHandling 클래스입니다. 난 그냥 다른 UserControl에서 텍스트를 추가 할 때 에러 처리에서 새로운 인스턴스이기 때문에
public class ErrorHandling
{
public static Action WriteErrorLog;
private static object writeLock = new object();
public enum errorState
{
INFO, WARNING, CRIT
}
public string getErrorString(int ErrorCode)
{
var errorString = string.Empty;
var reader = new StreamReader(File.OpenRead(@"errorCodes.csv"));
List<string> Codes = new List<string>();
List<string> Error = new List<string>();
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(';');
Codes.Add(values[0]);
Error.Add(values[3]);
}
var index = Codes.FindIndex(p => p == ErrorCode.ToString());
if (index == -1)
return "Unbekannter Fehler aufgetreten!";
else
return Error[index] + " (" + Codes[index] + ")";
}
public void addToLogFile(errorState error, int errorCode = 0, string errorText = null)
{
var errorTextResult = error.ToString();
if (errorCode == 0 && errorText == null)
{
return;
}
else if (errorCode != 0 && errorText != null)
{
errorTextResult += " - " + DateTime.Now.ToString();
errorTextResult += " : " + getErrorString(errorCode) + "\n";
errorTextResult += errorText;
}
else if (errorCode != 0 && errorText == null)
{
errorTextResult += " - " + DateTime.Now.ToString();
errorTextResult += " : " + getErrorString(errorCode);
}
else if (errorCode == 0 && errorText != null)
{
errorTextResult += " - " + DateTime.Now.ToString() + " : ";
errorTextResult += errorText;
}
ThreadPool.QueueUserWorkItem(writeToLogFile, errorTextResult);
}
#region LogDatei schreiben
public static void writeToLogFile(object text)
{
try
{
if (!File.Exists(Properties.Settings.Default.LogFilePath))
{
using(var writer = File.AppendText(Properties.Settings.Default.LogFilePath))
writer.WriteLine(Properties.Settings.Default.LogFilePath, "LatikeManager Logfile " + DateTime.Now.ToString());
}
using (var writer = File.AppendText(Properties.Settings.Default.LogFilePath))
writer.WriteLine(Properties.Settings.Default.LogFilePath, text + "\n");
WriteErrorLog();
}
catch (Exception ex)
{
MessageBox.Show("Fehler beim schreiben der Log Datei : \n" + text + "\n" + ex.ToString());
}
}
#endregion
}
, 동작은 발생하지 않습니다.
자신에게 유리하게 기존 로깅 프레임 워크를 채택하십시오. 왜 그 일을 스스로하고 그것을 다시 생각해야합니까? 자신의 솔루션을 디버그하는 데 걸리는 시간은 하나를 채택하는 것보다 오래 걸릴 것입니다. –