log4net 多个附加程序,写入事件查看器

2024-01-17

我使用 log4net 进行日志记录,我有两个附加程序,一个文件和另一个事件日志附加程序。我在注册表编辑器中注册了应用程序,问题是现在两个记录器都在事件查看器中写入。我需要fileAppender写入文件并eventLogAppender显示在事件查看器中。

<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
  <file value="file.log"/>
  <appendToFile value="false"/>
  <layout type="log4net.Layout.PatternLayout">
    <header value="Logging Start &#xD;&#xA;"/>
    <footer value="Logging End &#xD;&#xA;"/>
    <conversionPattern value="%date [%thread] %-5level %logger: %message%newline"/>
  </layout>
</appender>

<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">

  <param name="ApplicationName" value="eventlog" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
  </layout>
</appender>

<root>
  <level value="DEBUG"/>
  <appender-ref ref="LogFileAppender"/>
  <appender-ref ref="EventLogAppender" />
</root>
</log4net>

然后在代码中

private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// private static readonly ILog log = LogManager.GetLogger("LogFileAppender");
private static readonly ILog logEvents = LogManager.GetLogger("EventLogAppender");

我尝试了不同的方法,但没有人工作,有什么解决办法吗?

Thanks!


为了将多个 ILog 实例与 log4net 一起使用并向每个实例记录不同的信息,您必须在配置文件的 log4net 部分中配置至少两个 Logger 元素。

就您而言,您有两个想要的目标 - 文件和事件日志。我将它们称为 FileLogger 和 EventLogger。

以下是 log4net 部分中所需的附加配置的示例:

<logger name="FileLogger">
  <level value="ALL" />
  <appender-ref ref="LogFileAppender" />
</logger>

<logger name="EventLogger">
  <level value="ALL" />
  <appender-ref ref="EventLogAppender" />
</logger>

然后,要在代码中使用每一个,请像这样实例化它们:

private static readonly ILog fileLogger = LogManager.GetLogger("FileLogger");
private static readonly ILog eventLogger = LogManager.GetLogger("EventLogger");

请注意,appender 元素的 ref 属性与您已配置的appender 的 name 属性相匹配,并且传递给 GetLogger 的名称与 logger 元素的 name 属性相匹配。

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

log4net 多个附加程序,写入事件查看器 的相关文章

随机推荐

  • .Net 中的模拟弹性搜索响应

    我有 Elastic Search Nest 库代码 需要模拟我从弹性搜索索引获得的响应 var obj service Search
  • font-size 为 62.5% 的 html 和 em 计算

    我有点困惑 希望有人能解释这种行为 我有以下代码
  • Google Play 登录 Unity

    我正在尝试集成 Google play 服务 以便我可以在游戏中获得成就和排行榜 我尝试了以下代码 public Text myText void Awake PlayGamesPlatform Activate public void S
  • 将自定义属性添加到 app.config 中的自定义提供程序配置部分

    我正在关注这篇精彩的文章 in NET 基本上 本文详细解释了如何最终得到如下所示的配置文件
  • 将 Swift 字典转换为字符串

    为了测试和调试 我尝试将字典的内容放入字符串中 但不知道它将如何实现 是否可以 如果是 如何 字典是从网络服务获取的 所以我不知道它的键值 我想使用应用程序中的数据 在 Objective C 中 足以在 NSString 中存储任何内容
  • 如何在不使用 API 的情况下以编程方式执行搜索?

    我想创建一个程序 将字符串输入到 Google 等网站的文本框中 不使用其公共 API 然后提交表单并获取结果 这可能吗 我认为抓取结果需要使用 HTML 抓取 但是如何在文本字段中输入数据并提交表单呢 我会被迫使用公共 API 吗 难道这
  • NPM 错误!当我运行创建反应应用程序时代码完整性

    我尝试启动一个新的反应项目 但不断收到此错误 npm ERR code EINTEGRITY npm ERR errno EINTEGRITY npm ERR Invalid response body while trying to fe
  • 如何在 Android 中从 Drawable 将图像附加到彩信?

    我想将资源 可绘制文件夹中的图像附加到彩信 是否可以将可绘制文件夹中的图像附加到彩信 如果是 请在此处提供一些代码 我尝试了很多 也在这里找到了很多 以及在谷歌上但仍然无法获得正确的解决方案 请有人帮助我解决这个问题 提前致谢 我的代码如下
  • 检查R中的值是否==整数(0)[重复]

    这个问题在这里已经有答案了 我正在使用grepR 中的函数检查是否满足条件正则表达式 我所拥有的是这样的 grep expression string 一个例子可能是 value grep s A z value 哪个输出 整数 0 我想要
  • 具有绝对导入的 Rollup 和 Typescript 类型声明

    我正在制作 React 组件库 项目结构是这样的 src components utils hooks 现在我尝试使用汇总生成类型 d ts 文件 类型是生成的 但例如我的组件NumberInput正在使用绝对导入Input像这样的组件 i
  • React 与 ReactDOM?

    我有点新的反应 我发现我们必须导入两件事才能开始 React and ReactDOM 任何人都可以解释其中的区别 我正在阅读反应文档 https reactjs org docs 但它没有说 React 和 ReactDOM 最近才被分成
  • C++ cout 不显示任何内容

    什么可以解释为什么 cout 在此代码中没有显示任何内容 我知道它与 v 0 1 行有关但我不知道为什么 有人有解释吗 编辑 我也知道改变 v 0 1 对于 v push back 1 会解决问题 include
  • FreeTDS 不使用配置的 tds 版本

    freetds v0 91 tds 版本不匹配 我想在 Ubuntu 14 04 上连接到带有 FreeBSD 的 Windows SQL Server FreeTDS 使用 apt get 安装 我使用以下命令尝试了不同的 tds 版本
  • iexpress 生成的可执行文件在 XP 上不是有效的 win32 应用程序

    我使用的是 c windows syswow64 中的 32 位 iexpress exe 生成的 exe 文件在 Windows 7 和 Windows 8 x64 上运行良好 我可以确认它是 32 位应用程序 然而 当尝试在 XP 上运
  • 用C语言访问Gmail

    python 有等效的吗libgmail http libgmail sourceforge net in C Edit 我正在努力实现相当于GmailFS http en wikipedia org wiki GmailFS在C 如果您能
  • 使用knitr时无法让LyX生成不在同一行的两个图

    这里是针织新手 喜欢这个包 一切都很顺利 除了在 LyX 中编译后两个图不会并排出现 不确定发生了什么 因为我正在逐字复制 knitr 图形手册 knitr graphics lyx 中的示例 我的 LyX 代码 在图形浮动中 lt
  • Spring boot:排除一些自动配置的bean

    我有一个使用 spring kafka 的 Spring boot 项目 在这个项目中 我构建了一些包装 spring kafka beans 的事件驱动组件 即 KafkaTemplate 和 ConcurrentKafkaListene
  • 如何通过.NET/C# 查找CPU 核心数?

    有没有办法通过 NET C 找出CPU核心数 PS这是一个直接的代码问题 而不是 我应该使用多线程吗 问题 您可以获得与处理器相关的多种不同信息 物理处理器数量 核心数 逻辑处理器的数量 这些都可以不同 如果机器具有 2 个支持超线程的双核
  • 带有 angular2 的非 SPA

    我开始使用 Angular2 带有 Express js 后端 目的是将页面的几个部分的控制权传递给 Angular2 组件 但我最终意识到 当 Angular2 控制页面的整个区域时 系统会更有效 但是 我的应用程序不是 SPA 除了保存
  • log4net 多个附加程序,写入事件查看器

    我使用 log4net 进行日志记录 我有两个附加程序 一个文件和另一个事件日志附加程序 我在注册表编辑器中注册了应用程序 问题是现在两个记录器都在事件查看器中写入 我需要fileAppender写入文件并eventLogAppender显