Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Посоветуйте как работать с лог-файлами 
:(
    Опции темы
MasterOfCode
Дата 4.12.2008, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: 4
Всего: 27



Как лучше организовать сохранение в логи.
Я делал так:
Создавал List<string> _log и писал все в него, потом в конце сохранял. 
Но у этого метода есть недостатки, если вдруг происходила не отловленная ошибка, лог соответственно не сохранялся.
Отловить все не мог по такой причине:
например есть цикл
Код

try
{
    while(_drOra.Read())
    {
        try
        {
            //...
        }
        catch(Exception x)
        {
            //...
        }
    }
catch (Exception x_main) 
{
    //...
}
finally
{
    //save log
}

все хорошо, но когда происходит ошибка в цикле, он отлавливает ее и после обработки сразу передает на выше в обработчик x_main и переходит в блок файнали. Мне этого не надо. Но тогда получается если убрать первый трай, то появятся ошибки которые не обработаны будут.

Второй вариант - это сразу при обработке ошибки писать на диск в файл, но это больше по времени?

Подскажите как лучше организовывать работу с логами?


--------------------
user posted image
PM ICQ   Вверх
Alekz
Дата 4.12.2008, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 5.2.2008
Где: Запорожье, Украин а

Репутация: 1
Всего: 2



PM MAIL   Вверх
jorikdima
Дата 4.12.2008, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 18.1.2008
Где: Там, где Зенит

Репутация: нет
Всего: нет



Цитата(Alekz @ 4.12.2008,  10:35)
log4net

+1
PM MAIL   Вверх
archeg
Дата 4.12.2008, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 6.1.2007
Где: Киев

Репутация: 11
Всего: 27



Alekz, я думаю вопрос не в том каким способом лучше записать, а каким способом лучше отловить. Лог4нет кажись предлагает только методы записи.

MasterOfCode, внутренний трай должен указывать конкретный ексепшин который ты обрабатываешь. Ловить все - плохая затея. Если ты открываешь файл - ты можешь обработать FileNotFound и т.д.

В Application есть эвент, кажись ThreadException или что-то подобное. Может помочь.


--------------------
ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru)

Дядька всегда можно спросить в аське, если не задалбывать - не откажет smile
И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои  ;)
PM MAIL ICQ Jabber   Вверх
MasterOfCode
Дата 4.12.2008, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: 4
Всего: 27



Цитата(archeg @  4.12.2008,  14:16 Найти цитируемый пост)
внутренний трай должен указывать конкретный ексепшин который ты обрабатываешь. Ловить все - плохая затея. Если ты открываешь файл - ты можешь обработать FileNotFound и т.д.

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

Цитата(archeg @  4.12.2008,  14:16 Найти цитируемый пост)
я думаю вопрос не в том каким способом лучше записать, а каким способом лучше отловить. Лог4нет кажись предлагает только методы записи.

В большей степени как ловить. Но и как писать тоже хотелось бы узнать, и обязательно для этого пользоваться сторонними компонентами? И как они работают?


--------------------
user posted image
PM ICQ   Вверх
Partizan
Дата 4.12.2008, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



MasterOfCode, можно посмотреть до кучи Exception Handling Block в MS Patterns & Practices CAB


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
archeg
Дата 4.12.2008, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 6.1.2007
Где: Киев

Репутация: 11
Всего: 27



Цитата(MasterOfCode @ 4.12.2008,  12:27)
Цитата(archeg @  4.12.2008,  14:16 Найти цитируемый пост)
внутренний трай должен указывать конкретный ексепшин который ты обрабатываешь. Ловить все - плохая затея. Если ты открываешь файл - ты можешь обработать FileNotFound и т.д.

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

Цитата(archeg @  4.12.2008,  14:16 Найти цитируемый пост)
я думаю вопрос не в том каким способом лучше записать, а каким способом лучше отловить. Лог4нет кажись предлагает только методы записи.

В большей степени как ловить. Но и как писать тоже хотелось бы узнать, и обязательно для этого пользоваться сторонними компонентами? И как они работают?

Ну тогда как бы твоей проблемы и нет. Отловил FileNotFound - сделал соответствующий откат, выдал окошко пользователю - дальше его не выкидываешь, его и не нужно писать в лог файл.

Лог4нет удобный очень - всякие разные форматы записи, легко конфигурируемый и не сложный в работе. Конечно же лучше использовать его хотя бы следуя тому что могут поменяться какие-то требования к логам (к примеру раньше сохранял в текстовом формате, а тут понадобилось сохранить в хмл, чтобы потом написать прогу которая показывала логи в дружественном интерфейсе) - в лог4нет такие вещи пройдут просто и безболезненно


--------------------
ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru)

Дядька всегда можно спросить в аське, если не задалбывать - не откажет smile
И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои  ;)
PM MAIL ICQ Jabber   Вверх
QryStaL
Дата 4.12.2008, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 14
Всего: 32



Есть "родное" решение от MS - Enterprise Library. В частности, The Logging Application Block.


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0493 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.