Захват исключений и регистрация ошибок - PullRequest
0 голосов
/ 27 сентября 2011

У меня есть служебный класс, называемый ErrorLog, который в основном выполняет некоторые базовые функции регистрации ошибок, записи сообщений об ошибках, отслеживания стека и т. Д.

Так что в моем основном приложении на c # я почти всегда забрасываюэтот кусок кода, ErrorLog el = new ErrorLog() в часть catch(Exception e), а затем начните вызывать его методы для ведения журнала.

Например, вот 1 из методов в ErrorLog class

public void logErrorTraceToFile(string fname, string errorMsg, string errorStackTrace)
{ 
    //code here
}

В любом случае, мне просто интересно, насколько это хороший способ регистрировать ошибки таким способом?Мне кажется, что это решение немного неуклюже.(учитывая, что в каждом блоке перехвата вы создаете el объект и неоднократно вызываете его метод.)

Кроме того, с точки зрения хранения файлов журнала ошибок, где он находится лучшее / наиболее разумное местоположениеспасти их?В настоящее время я просто жестко запрограммировал каталог, C:\ErrorLogs\, так как я все еще тестирую несколько вещей.Но я хочу сделать это правильно, прежде чем я забуду.

Так есть идеи или предложения?

Спасибо.

Ответы [ 2 ]

1 голос
/ 27 сентября 2011

Посмотрите на ELMAH Это очень эффективно при обработке и отлове ошибок в приложении.

Ошибки регистрируются в базе данных.

0 голосов
/ 27 сентября 2011

Обычно я использую шаблон Singleton, чтобы иметь одно приложение Logger.

public class Logger
{
    protected static Logger _logger;

    protected Logger()
    {
        // init
    }

    public void Log(string message)
    {
        // log
    }

    public static Logger GetLogger()
    {
        return _logger ?? _logger = new Logger();
    }
}

В качестве места для хранения данных я бы использовал данные приложения или каталог пользовательских данных, только там вы можете быть уверены, что имеете доступ для записи.

Редактировать: Вот как вы будете использовать Logger из любого места в вашем коде:

Logger.GetLogger().Log("test");
...