文字列をログに記録するロガー、静的クラスを持つ静的クラスを作成したので、インスタンスを作成することなくプロジェクト全体から呼び出すことができます。とてもいいのですが、ファイルへのアクセスには時間がかかるため、別のスレッドで実行したい
どういうわけかそれは可能ですか、それを行う最良の方法は何ですか?
少し短い説明ですが、アイデアが明確になることを願っています。そうでない場合は、お知らせください。
前もって感謝します!
ちなみに、私のコードの他の改善も歓迎されていますが、すべてが可能な限り効率的ではないと感じています。
internal static class MainLogger
{
internal static void LogStringToFile(string logText)
{
DateTime timestamp = DateTime.Now;
string str = timestamp.ToString("dd-MM-yy HH:mm:ss ", CultureInfo.InvariantCulture) + "\t" + logText + "\n";
const string filename = Constants.LOG_FILENAME;
FileInfo fileInfo = new FileInfo(filename);
if (fileInfo.Exists)
{
if (fileInfo.Length > Constants.LOG_FILESIZE)
{
File.Create(filename).Dispose();
}
}
else
{
File.Create(filename).Dispose();
}
int i = 0;
while(true)
{
try
{
using (StreamWriter writer = File.AppendText(filename))
{
writer.WriteLine(str);
}
break;
}
catch (IOException)
{
Thread.Sleep(10);
i++;
if (i >= 8)
{
throw new IOException("Log file \"" + Constants.LOG_FILENAME + "\" not accessible after 5 tries");
}
}
}
}
}
enter code here