Как пометить текущий метод в файле журнала? - PullRequest
1 голос
/ 07 февраля 2011

Я пишу класс регистрации исключений.Мой вопрос: что использовать, чтобы отметить текущий метод?За исключением его имени, код будет запутан, поэтому его нельзя будет использовать.

Ответы [ 3 ]

3 голосов
/ 07 февраля 2011

Вы можете придумать свой собственный атрибут и украсить свои методы с атрибутом. Что-то вроде [MethodName("WriteXMLData")]

Затем вы можете заставить класс logger отражать объект MemberInfo, передаваемый ему во время регистрации.

Этот - отличный учебник для определения и запроса ваших собственных атрибутов.

0 голосов
/ 07 февраля 2011

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

0 голосов
/ 07 февраля 2011

вы можете получить все данные о конкретном исключении, которые вам нужны, и записать их в источник данных:

здесь вы можете извлечь небольшую информацию о данном исключении:

protected void Application_Error( object sender, EventArgs e )
{
    Exception Exc = null;
    try
    {
        Exc = Server.GetLastError();
        if(Exc.InnerException != null)
            Exc = Exc.InnerException;

        // Method name + line number + column
        System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(Exc, true);
        string ExtraData = "Name : {0}, Line : {1}, Column : {2}";
        ExtraData = String.Format(ExtraData, trace.GetFrame(0).GetMethod().Name, trace.GetFrame(0).GetFileLineNumber(), trace.GetFrame(0).GetFileColumnNumber());
        // exception message
        Exc.Message;
        // page name
        Request.Url.ToString();
        // stack trace
        Exc.StackTrace; 
    }
}
...