【问题标题】:Log4Net printing "ThreadID" and "Thread Name" in the logLog4Net 在日志中打印“ThreadID”和“Thread Name”
【发布时间】:2017-03-08 15:13:49
【问题描述】:

在我们的应用程序中,我们通常命名我们创建的线程。例如,我们将创建一个线程并给它起一个类似“WorkerThread”的名称。

假设这是我的 log4net 配置文件的一部分:

 <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="C:\Logs\MyApp\myapp.log" />
      <param name="AppendToFile" value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="5" />
      <maximumFileSize value="1000MB" />
      <staticLogFileName value="true" />
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="DEBUG" />
        <levelMax value="FATAL" />
      </filter>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c :: %m%n" />
      </layout>
    </appender>

此配置将在我的日志中打印以下内容:

2017-03-07 17:00:00,003 [MessagePump Worker] DEBUG MyApp.App :: Blah Blah Blah

我想打印:

2017-03-07 17:00:00,003 [MessagePump Worker: 2380] DEBUG MyApp.App :: Blah Blah Blah

我只是想弄清楚我需要在我的转换模式中添加什么,以包括 ThreadID (2380),如我上面的示例所示。我已经进行了一些谷歌搜索,但似乎找不到同时打印“线程名称”和“线程 ID”的方法。有人有什么想法吗?

【问题讨论】:

  • 也许您可以创建一个自定义记录器包装器并手动添加 ThreadID?看看这个链接:logging.apache.org/log4net/release/example-apps.html 这里讨论了如何使用自定义 EventID 扩展 log4net(之前自己使用过)。我认为您可以使用此方法添加 ThreadID 而不是 EventID。
  • 好像我需要一个自定义的ConversionPattern
  • @HansPassant - 如果这是从 log4net 切换到 nlog 的唯一原因,管理层将很难接受
  • 你试过用 %thread 代替吗?

标签: c# .net vb.net log4net


【解决方案1】:

在您的应用程序线程中使用:

ThreadContext.Properties["threadid"] = Thread.CurrentThread.ManagedThreadId;

在转换模式中:

%property{threadid}

【讨论】:

    【解决方案2】:

    除了手动添加 ThreadContext.Property 之外可能是不可能的,就像在@Wouter 的回答中一样。

    在此处查看文档:

    PatternLayout Class

    线程 |用于输出生成日志事件的线程的名称。如果没有可用的名称,则使用线程号。

    因此,如果线程名称不存在,您只会获得线程 ID。我自己对此感到沮丧,因为我只想要线程 ID,即使命名了线程也是如此。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-20
      • 2015-07-08
      • 1970-01-01
      • 2011-06-03
      相关资源
      最近更新 更多