如何使用企业库日志记录仅编写消息来调试输出?

2024-01-03

我想使用 EntLib Logging 实现日志记录,并为类别“调试”连接两个 TraceListener。一个会将这些消息写入文件,另一个会将它们输出到系统跟踪输出,与 Debug.Write 的方式相同(以便我可以使用 Sysinternals DbgView 监视它们),但我找不到如何使用格式化程序设置第二个侦听器我需要。我真正需要的只是消息,但它会输出一大堆东西,例如 EventId、优先级等。我如何删除所有这些东西?


我在 MSDN 上找到了一个很好的演练:创建自定义跟踪侦听器 http://msdn.microsoft.com/en-us/library/dd139989.aspx

它正是我所需要的。这是我最终得到的完整代码:

using System;
using System.Diagnostics;
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Logging;
using Microsoft.Practices.EnterpriseLibrary.Logging.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners;

namespace Common.Utils
{
    [ConfigurationElementType(typeof(CustomTraceListenerData))]
    public class FormattedDebugWriterTraceListener : CustomTraceListener
    {
        public override void TraceData(TraceEventCache eventCache, string source, TraceEventType eventType, int id, object data)
        {
            if (data is LogEntry && this.Formatter != null)
            {
                this.WriteLine(this.Formatter.Format(data as LogEntry));
            }
            else
            {
                this.WriteLine(data.ToString());
            }
        }

        public override void Write(string message)
        {
            Debug.Write(message);
        }

        public override void WriteLine(string message)
        {
            Debug.WriteLine(message);
        }

    }
}

配置文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </configSections>
  <loggingConfiguration name="Logging Application Block" tracingEnabled="true"
    defaultCategory="General" logWarningsWhenNoCategoriesMatch="true">
    <listeners>
      <add listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.CustomTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
        traceOutputOptions="None" type="Common.Utils.FormattedDebugWriterTraceListener, Common.Utils"
        name="FormattedDebugWriterTraceListener" initializeData="" formatter="SimpleMessageFormatter" />
      <add fileName="log\Debugging.log" rollSizeKB="0" timeStampPattern="yyyy-MM-dd"
        rollFileExistsBehavior="Overwrite" rollInterval="Week" formatter="GeneralTextFormatter"
        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="RollingFlatFileTraceListener" />
    </listeners>
    <formatters>
      <add template="{message}&#xD;&#xA;" type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
        name="SimpleMessageFormatter" />
      <add template="Timestamp: {timestamp}&#xD;&#xA;Message: {message}&#xD;&#xA;Category: {category}&#xD;&#xA;Priority: {priority}&#xD;&#xA;EventId: {eventid}&#xD;&#xA;Severity: {severity}&#xD;&#xA;Title:{title}&#xD;&#xA;Machine: {machine}&#xD;&#xA;Application Domain: {appDomain}&#xD;&#xA;Process Id: {processId}&#xD;&#xA;Process Name: {processName}&#xD;&#xA;Win32 Thread Id: {win32ThreadId}&#xD;&#xA;Thread Name: {threadName}&#xD;&#xA;Extended Properties: {dictionary({key} - {value}&#xD;&#xA;)}"
        type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
        name="GeneralTextFormatter" />
    </formatters>
    <categorySources>
      <add switchValue="All" name="Debugging">
        <listeners>
          <add name="FormattedDebugWriterTraceListener" />
          <add name="RollingFlatFileTraceListener" />
        </listeners>
      </add>
      <add switchValue="All" name="General" />
    </categorySources>
    <specialSources>
      <allEvents switchValue="All" name="All Events" />
      <notProcessed switchValue="All" name="Unprocessed Category" />
      <errors switchValue="All" name="Logging Errors &amp; Warnings" />
    </specialSources>
  </loggingConfiguration>
</configuration>

用法是这样的:

Debug.Write("Debug.Write test");
Logger.Write("EntLib test", "Debugging");

两者最终都会出现在调试输出中,可以通过 DbgView 轻松追踪。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用企业库日志记录仅编写消息来调试输出? 的相关文章

  • 记录类名、方法名和行号的性能影响

    我正在我的 java 应用程序中实现日志记录 以便我可以调试应用程序投入生产后可能出现的潜在问题 考虑到在这种情况下 人们不会奢侈地使用 IDE 开发工具 以调试模式运行事物或单步执行完整代码 因此在每条消息中记录类名 方法名和行号将非常有
  • ASP.NET Core 日志记录在 2 个不同的文件中

    当使用默认的 ASP NET core 日志记录与 Serilog 结合使用时 是否可以将错误写入errors log并将信息写入informations log using Microsoft Extensions Logging usi
  • 哪里可以找到蝗虫原木?

    我正在使用 Locust 对我们的应用程序进行压力测试 我收到错误 因为 POST 调用似乎不正确 在哪里可以看到蝗虫的日志 我想看看邮寄电话是什么样子 看看出了什么问题 这是我的代码 以防有人可以告诉我我做错了什么 from locust
  • Serilog 破坏多个日志?

    这实在是太离奇了 我有 2 个完全独立的程序 它们都使用 Serilog 例如 Log Logger new LoggerConfiguration MinimumLevel Debug Filter ByExcluding e gt e
  • 需要参考$log.log调用行号

    当我使用 Angular log 服务时 控制台中的所有行都会显示对 angular js 5687 的引用 而不是我调用 log log 函数的行 如何获得对我调用 log 的行的引用 另外 我有自己的围绕 log 的服务 如何引用对我的
  • 如何防止记录机器人框架中除 Log 关键字之外的所有关键字?

    I am a beginner in robot framework I want the log file of my robot test to contain the logs for only the log keyword I t
  • 扭曲的日志记录到屏幕(标准输出)不起作用

    我有这个小程序取自这里 https twistedmatrix com documents 16 3 0 core howto logger html usage for emitting applications from twisted
  • cf.net 异常和其他日志记录

    我想向在 WM6 Pro 上运行的 cf net 应用程序添加一些日志记录功能 我正在研究记录异常和一些更敏感的代码部分 我希望将日志存储在本地 即在设备上 并将它们可靠地上传到服务器 它们需要排队 我的应用程序偶尔会连接 有谁知道 log
  • AWS CloudWatchLog 限制

    我正在尝试找到集中式解决方案来将我的应用程序日志记录从数据库 RDS 中移出 我本想使用 CloudWatchLog 但注意到 PutLogEvents 请求有限制 PutLogEvents 请求的最大速率为每秒 5 个请求 每个日志流 即
  • 声纳问题:确保该记录器的配置是安全的

    我在 Sonar 上的代码遇到以下问题 确保该记录器的配置是安全的 我写的代码是 public static final Logger logger Logger getLogger logger if logLevel equalsIgn
  • Logback 配置在单行上有异常吗?

    我的日志被提取 传输并合并到 elasticsearch 中 多行事件很难跟踪和诊断 有没有办法使用收集器和正则表达式将异常行分组到单个记录中登录配置 https logback qos ch manual layouts html xTh
  • AWS Beanstalk 上的 Python。如何对自定义日志进行快照?

    我正在开发适用于 aws beanstalk 环境的 python 应用程序 为了进行错误处理和调试 建议我将日志写入目录 var logs 上的自定义 lof 文件 我应该怎么做才能从 Elastic beanstalk 管理控制台获得能
  • 如何使用 Fluent 为 Elasticsearch 添加时间戳和密钥

    我已经配置了 fluidd 和 elasticsearch 它们都工作正常 我正在跟踪一个文件 然后读取其数据并将其发布到elasticsearch 下面是json数据 time 2018 05 14T11 37 30 339593 Dat
  • /proc/kmsg 和 dmsg 有什么区别?

    我们通常这样做cat proc kmsg or dmesg从用户空间查看内核日志 我明白了dmesg是一个循环缓冲区 它从kmsg 但是kmsg也不是循环缓冲区 它们之间有什么区别和联系呢 宽松地说 dmesg 是一个转储 proc kms
  • NGINX:在 access_log 中混淆密码

    我想记录 request body在访问日志中 但有些请求包含一些敏感的 JSON 字段 例如密码 Example 2019 03 28 201 POST api user add HTTP 1 1 x22email x22 email p
  • 如何在 JBoss 上记录 IP 地址

    我想记录呼叫我的 WS 的客户端的 IP 地址 我怎样才能在 JBoss 上做到这一点 EDIT 如果可能的话 我想在 JBOSS 上使用 log4J 配置 将以下内容附加到 log4j 配置 xml 中的转换模式参数 X RemoteAd
  • 通过 Gradle 进行测试时记录日志

    在测试时 Gradle 似乎将 stdout stderr 重定向到project dir build reports tests index html 有没有办法避免这种重定向 并将内容打印到控制台 附加信息 这是一个 Scala 2 9
  • 包装 NLog 时如何保留调用点信息

    我有一个包装 NLog 的类 称为 NLogger 我的日志保存到我的数据库中 我遇到的问题是如何显示日志记录发生的位置 我有这个
  • C# - 从自定义应用程序读取嵌套事件日志

    我在用sysmon https technet microsoft com en us sysinternals dn798348捕获一堆事件信息 网络连接 DLL 加载等 我想提取该信息并将其用于各种目的 但似乎没有任何方法可以检索嵌套日
  • Spring Boot、logback 和logging.config 属性

    我正在 Spring Boot 项目中实现日志记录logback图书馆 我想根据我的 Spring 配置文件加载不同的日志配置文件 属性spring pofiles active 我有3个文件 logback dev xml logback

随机推荐