Запись в файл журнала в ASP.NET - PullRequest
7 голосов
/ 12 ноября 2008

Я записываю данные о событиях в файл журнала в http-обработчике asp.net с помощью метода File.AppendAllText. Я обеспокоен тем, что произойдет, когда несколько запросов будут получены одновременно. AppendAllText блокирует файл, в который записывает?

Ответы [ 3 ]

9 голосов
/ 08 июля 2009

Я рекомендую использовать TextWriterTraceListener вместо того, чтобы пытаться управлять этим самостоятельно.

Очень прост в настройке и использовании:

TextWriterTraceListener logListener = new TextWriterTraceListener("C:\log.txt", "My Log Name");
Trace.Listeners.Add(logListener);

А потом что-то регистрировать:

Trace.WriteLine("Log this text");

Он очень прост в использовании, а также имеется много разных типов прослушивателей для SQL, журнала событий, текстового файла и т. Д. Поэтому вам не придется настраивать код, если вы хотите изменить прослушиватель. *

6 голосов
/ 12 ноября 2008

нет, у вас должен быть объект статической блокировки, защищающий запись в файл журнала, например,

public static object LockingTarget = new object();

public void LogToFile(string msg)
{
    lock(LockingTarget)
    {
        //append to file here as fast as possible
    }
}
1 голос
/ 12 ноября 2008

Вы можете использовать My.Log для записи в файлы журналов.

Редактировать: если вы используете FileLogTraceListener, этот слушатель является потокобезопасным.

Это также позволяет вам контролировать и настраивать ведение журнала через файл web.config.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...