Записать отладочную информацию используя Logging Application Block

StackOverflow https://stackoverflow.com/questions/1002717

Вопрос

Я использую блок приложения журналирования (LAB) в своем приложении ASP.NET вместе с блоком приложения обработки исключений для регистрации любых необработанных исключений. Я использую метод Application_Error в Global.asax, чтобы перехватить эти ошибки. Я пишу в Rolling Flat File. Это все работает просто отлично.

Я также хотел бы регистрировать сообщения отладки, используя LAB, когда я установил переключатель в разделе appSettings web.config. Но я не могу понять, как отправить эти сообщения отладки в другой файл журнала. Я был бы очень признателен, если бы кто-нибудь посмотрел на мой код и раздел web.config и увидел, выпало ли что-нибудь. Спасибо!

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

private void LogDebugInfo()
{
    using (new Tracer("Debugging"))
    {
        StringBuilder msg = new StringBuilder();
        msg.AppendLine("Querystring: " + Request.QueryString.ToString());

        foreach (string item in Request.Form)
        {
            msg.AppendLine("Form item name: " + item + " value: " + Request.Form[item]);
        }

        HttpFileCollection files = Request.Files;
        foreach (string f in files)
        {
            msg.AppendLine("Posted filename: " + files[f].FileName + " type: " + files[f].ContentType + " length: " + files[f].ContentLength);
        }

        LogEntry log = new LogEntry();
        log.Message = msg.ToString();
        Logger.Write(log);
    }
}

Вот соответствующий раздел из web.config:

<loggingConfiguration name="Logging Application Block" tracingEnabled="true"
  defaultCategory="Data Access" logWarningsWhenNoCategoriesMatch="true">
    <listeners>
        <add fileName="log\Data Access.log" rollSizeKB="0" timeStampPattern="yyyy-MM-dd"
          rollFileExistsBehavior="Increment" rollInterval="Day" formatter="Text Formatter"
          header="----------------------------------------" footer="----------------------------------------"
          listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
          traceOutputOptions="None" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
          name="Data Access TraceListener" />
        <add fileName="log\Debugging.log" rollSizeKB="0" timeStampPattern="yyyy-MM-dd"
          rollFileExistsBehavior="Increment" rollInterval="Day" formatter="Text Formatter"
          header="----------------------------------------" footer="----------------------------------------"
          listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
          traceOutputOptions="None" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
          name="Debugging TraceListener" />
        <add fileName="log\General Exceptions.log" rollSizeKB="0" timeStampPattern="yyyy-MM-dd"
          rollFileExistsBehavior="Increment" rollInterval="Day" formatter="Text Formatter"
          header="----------------------------------------" footer="----------------------------------------"
          listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
          traceOutputOptions="None" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
          name="Log TraceListener" />
    </listeners>
    <formatters>
        <add template="Timestamp: {timestamp}&#xA;Message: {message}&#xA;Category: {category}&#xA;Priority: {priority}&#xA;EventId: {eventid}&#xA;Severity: {severity}&#xA;Title:{title}&#xA;Machine: {machine}&#xA;Application Domain: {appDomain}&#xA;Process Id: {processId}&#xA;Process Name: {processName}&#xA;Win32 Thread Id: {win32ThreadId}&#xA;Thread Name: {threadName}&#xA;Extended Properties: {dictionary({key} - {value}&#xA;)}"
          type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
          name="Text Formatter" />
    </formatters>
    <categorySources>
        <add switchValue="All" name="Data Access">
            <listeners>
                <add name="Log TraceListener" />
            </listeners>
        </add>
        <add switchValue="All" name="Debugging">
            <listeners>
                <add name="Debugging TraceListener" />
            </listeners>
        </add>
        <add switchValue="All" name="General">
            <listeners>
                <add name="Log TraceListener" />
            </listeners>
        </add>
    </categorySources>
    <specialSources>
        <allEvents switchValue="All" name="All Events" />
        <notProcessed switchValue="All" name="Unprocessed Category" />
        <errors switchValue="All" name="Logging Errors &amp; Warnings">
            <listeners>
                <add name="Log TraceListener" />
            </listeners>
        </errors>
    </specialSources>
</loggingConfiguration>
Это было полезно?

Решение

Я обнаружил, что удаление с помощью (new Tracer (" Debugging ")) и добавление log.Categories.Add (" Debugging "); в Вышеуказанный метод дал желаемые результаты.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top