1

助けが必要です。asp.net Web アプリのエラー ログ用のログ ファイルを作成/作成しようとしています。以前はコードは問題なく動作していましたが、コードを何も変更していないにもかかわらず、「別のプロセスで使用されているため、プロセスはファイルにアクセスできません」というエラーが発生しました。しかし、いずれにせよ、この問題を解決する必要があります。助けてください。私のコードで何が問題になっていますか? ありがとう。

        StreamWriter file;
        if (logDetails.User.Length == 0)
        {
            logDetails.User = "Administrator";
        }

        string fileName = Path.Combine(filePath, appFile) + "_" + logDetails.User + "_" + DateTime.Now.ToString("yyyyMMdd") + ".txt";

        StringBuilder builder = new StringBuilder();
        builder = new StringBuilder();

        if (!File.Exists(fileName))
        {
            file = new StreamWriter(fileName);
            builder.AppendFormat("{0}\t\t\t{1}\t{2}\t{3}\t\t\t\t\t\t{4}\t\t\t\t{5}", "DATE", "PRIORITY", "SEVERITY", "MESSAGE", "EXCEPTION TYPE");
            builder.Append(Environment.NewLine);
        }
        else
        {
            file = File.AppendText(fileName);  //**exception thrown here**
        }

        builder.Append(String.Format("{0}\t{1}\t\t{2}\t{3}\t{4}\t\t{5}", DateTime.Now.ToString(), logDetails.detail1, logDetails.detail2, logDetails.detail3+ logDetails.detail4, logDetails.detail5));

        builder.AppendLine();
        builder.Append(String.Format("STACKTRACE"));
        builder.AppendLine(logDetails.StackTrace);
        file.WriteLine(Convert.ToString(builder));
        file.Close();
4

1 に答える 1

2
StringBuilder builder = new StringBuilder();
if (!File.Exists(fileName))
{
    builder.AppendFormat("{0}\t\t\t{1}\t{2}\t{3}\t\t\t\t\t\t{4}\t\t\t\t{5}", "DATE", "PRIORITY", "SEVERITY", "MESSAGE", "EXCEPTION TYPE");
    builder.Append(Environment.NewLine);
}
builder.Append(String.Format("{0}\t{1}\t\t{2}\t{3}\t{4}\t\t{5}", DateTime.Now.ToString(), logDetails.detail1, logDetails.detail2, logDetails.detail3+ logDetails.detail4, logDetails.detail5));

builder.AppendLine();
builder.Append(String.Format("STACKTRACE"));
builder.AppendLine(logDetails.StackTrace);

using (StreamWriter sw = File.AppendText(path)) 
{
    sw.WriteLine(builder.ToString());
}
于 2013-10-24T04:32:03.933 に答える