Регистрация ошибок в C#

Когда я использую кнопку «Назад» в Firefox для доступа к ранее посещенной странице, сценарии на этой странице не будут запускаться снова.

blockquote>

Это правильно, и это хорошо.

Когда вы нажимаете ссылку в Firefox (и Safari и Opera), она не сразу уничтожает вашу страницу, чтобы перейти на следующую. Он держит страницу неповрежденной, просто скрывая ее от просмотра. Если вы нажмете кнопку «Назад», она снова вернет старую страницу, не загружая документ еще раз; это намного быстрее, что приводит к более плавным переходам назад / вперед страницы для пользователя.

Эта функция называется bfcache .

Любое содержимое, которое вы добавили в страница во время предыдущей загрузки пользователя и ее использование все равно будут. Любые обработчики событий, которые вы прикрепляли к элементам страницы, по-прежнему будут прикреплены. Любые тайм-ауты / интервалы, которые вы установили, будут по-прежнему активны. Поэтому редко есть причина, по которой вам нужно знать, что вы были скрыты и повторно показаны. Было бы неправильно снова вызвать onload или встроенный код сценария, потому что любая привязка и генерация контента, которые вы сделали в этой функции, будут выполняться во второй раз над одним и тем же контентом с потенциально катастрофическими результатами. (например, document.write в встроенном скрипте полностью уничтожит страницу.)

Причиной записи в window.onunload является то, что браузеры, реализующие bfcache, решили, что для совместимости со страницами, которые действительно нужно знать, когда их отбрасывают - любая страница, заявляющая интерес к знанию, когда onunload происходит, приведет к отключению bfcache. Эта страница будет загружена свежей, когда вы вернетесь к ней, вместо того, чтобы извлекать ее из bfcache.

Итак, если вы установите window.onunload= function() {};, то, что вы на самом деле делаете, намеренно ломает bfcache. Это приведет к тому, что ваши страницы будут медленно перемещаться и не должны использоваться, кроме как в крайнем случае.

Если вам нужно знать, когда пользователь уходит или возвращается на вашу страницу, не испортив bfcache, вы можете заблокировать события onpageshow и onpagehide:

window.onload=window.onpageshow= function() {
    alert('Hello!');
};
73
задан Rodney Schuler 11 June 2009 в 16:15
поделиться

13 ответов

Много log4net защищает здесь, таким образом, я уверен, что это будет проигнорировано, но я добавлю свое собственное предпочтение:

System.Diagnostics.Trace

Это включает слушателей, которые прислушиваются к Вашему Trace() методы, и затем пишут в файл журнала / выходное окно/журнал событий, в платформе, которые включены, DefaultTraceListener, TextWriterTraceListener и EventLogTraceListener. Это позволяет Вам определять уровни (Предупреждение, Ошибка, Информация) и категории.

класс Трассировки на MSDN
, Пишущем в журнал событий в веб-приложении
, UdpTraceListener - пишут log4net совместимые сообщения XML в средство просмотра журнала, такие как log2console

72
ответ дан Community 24 November 2019 в 12:13
поделиться

Log4Net, как другие сказали, довольно распространен и подобен Log4j, который поможет Вам, если Вы когда-нибудь сделаете какой-либо Java.

у Вас также есть опция использования Регистрирующегося Блока приложений http://www.codeproject.com/KB/architecture/GetStartedLoggingBlock.aspx

0
ответ дан Mario 24 November 2019 в 12:13
поделиться

В дополнение к нескольким комментариям, имеющим отношение к использованию Системы. Методы диагностики для входа, я также хотел бы указать, что инструмент DebugView очень аккуратен для проверки вывода отладки при необходимости - если Вы не требуете его, нет никакой потребности в приложениях для создания файла журнала, Вы просто запускаете DebugView как и, когда необходимый.

1
ответ дан Chris Ballard 24 November 2019 в 12:13
поделиться

Так же для log4net. Я добавляю свои два бита, потому что для фактического использования, имеет смысл смотреть на некоторые реализации с открытым исходным кодом для наблюдения примеров кода реального мира с некоторыми удобными дополнениями. Для log4net я предложил бы первое, что пришло на ум смотреть подтекст . Особенно смотрите на приложение, запускаются и assemblyinfo биты.

1
ответ дан Ted 24 November 2019 в 12:13
поделиться

Даже при том, что я лично ненавижу его, , log4net, кажется, фактический стандарт для входа C#. Демонстрационное использование:

log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
log.Error(“Some error”);
log.ErrorFormat("Error with inputs {0} and {1}", stringvar, intvar);
5
ответ дан Ben Hoffstein 24 November 2019 в 12:13
поделиться

Библиотека Предприятия является твердой альтернативой log4net, и это предлагает набор других возможностей также (кэширование, обработка исключений, проверка, и т.д....). Я использую его на примерно каждом проекте, который я разрабатываю.

Наиболее рекомендуемый.

11
ответ дан Eric Schoonover 24 November 2019 в 12:13
поделиться

Я использую Платформа журналирования Объектного Парня - также, как и большинство людей, которые пробуют ее. У этого парня есть немного интересные комментарии об этом.

14
ответ дан 24 November 2019 в 12:13
поделиться

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

15
ответ дан Mats Fredriksson 24 November 2019 в 12:13
поделиться

Я настоятельно рекомендовал бы рассмотрение log4Net. Этот сообщение покрытия большинство того, что необходимо начать.

41
ответ дан Gianlucca 24 November 2019 в 12:13
поделиться

Log4Net является довольно всесторонней платформой журналирования, которая позволит Вам регистрироваться к разным уровням (Отладка, Ошибка, Фатальная) и производить эти операторы журнала до мая различные места (прокручивающий файл, веб-сервис, ошибки окон)

, я в состоянии легко зарегистрироваться где угодно путем создания экземпляра регистратора

private static readonly ILog _log = LogManager.GetLogger(typeof([Class Name]));

и затем входа ошибки.

_log.Error("Error messsage", ex);
3
ответ дан FryHard 24 November 2019 в 12:13
поделиться

Можно использовать созданный во входе.NET. Изучите TraceSource и TraceListeners, они могут быть настроены в .config файле.

2
ответ дан CSharpAtl 24 November 2019 в 12:13
поделиться

Как я уже сказал в другом потоке, мы использовали Ведение журнала Object Guy Framework в нескольких производственных приложениях в течение нескольких лет. Его очень легко использовать и расширять.

5
ответ дан 24 November 2019 в 12:13
поделиться

Встроенная трассировка в System.Diagnostics отлично работает в .NET Framework, и я использую ее во многих приложениях. Однако одна из основных причин, по которой я все еще использую log4net, заключается в том, что во встроенной трассировке .NET Framework отсутствуют многие полезные полнофункциональные приложения, которые уже встроены в log4net.

Например, действительно не существует хорошей отслеживающей трассировки файлов прослушиватель, определенный в .NET Framework, кроме той, что находится в dll VB.NET, которая на самом деле не так уж и полнофункциональна.

В зависимости от вашей среды разработки я бы рекомендовал использовать log4net, если только сторонние инструменты не доступны, тогда я бы сказал, что используйте классы трассировки System.Diagnostics. Если вам действительно нужен лучший appender / tracelistener, вы всегда можете реализовать его самостоятельно.

Например, многие наши клиенты требуют, чтобы мы не использовали библиотеки с открытым исходным кодом при установке на их корпоративные машины, поэтому в этом случае классы трассировки .NET Framework идеально подходят.

Дополнительно - http://www.postsharp.org/ - это AOP-библиотека, которую я ищу, которая также может помочь в ведении журнала, как показано здесь в проекте кода: http: // www.codeproject.com/KB/dotnet/log4postsharp-intro.aspx ]

1
ответ дан 24 November 2019 в 12:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: