log4net 停止记录时如何接收事件

2024-02-20

Log4net 有点太擅长不抛出错误了。我正在尝试创建某种处理程序,如果 log4net 无法启动或死亡并且无法再记录,则会触发该处理程序。

我知道应用程序设置键可以打开 log4net 的内部调试 (log4net.Internal.Debug)。不过,只要 log4net 出现问题,我并不总是需要所有调试信息。

有没有人有办法以编程方式捕获和处理 log4net 中的错误?


可能对您有用的是创建一个实现的类错误处理程序 http://logging.apache.org/log4net/release/sdk/log4net.Core.IErrorHandler.html对于每个附加程序,然后配置每个附加程序以使用自定义错误处理类。与启用 log4net.Internal.Debug 相比,这应该为您提供更多的控制权。

我刚刚尝试过并且它有效(请注意,在我的示例中Logger是在其他地方定义的 log4net 记录器 - 其背后的目的是捕获来自 SMTP 附加程序的错误并将其记录到文件中):

using System;

using log4net.Core;

namespace Test
{
    public class SmtpErrorHandler : IErrorHandler
    {
        public void Error(string message)
        {
            Logger.Log.Error(message);
        }

        public void Error(string message, Exception ex)
        {
            Logger.Log.Error(message, ex);
        }

        public void Error(string message, Exception ex, ErrorCode errorCode)
        {
            Logger.Log.Error(String.Format("{0}{1}Error code: {2}", message, Environment.NewLine, errorCode), ex);
        }
    }
}

我在哪里配置我的附加程序(当然你也可以在配置中执行此操作):

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

log4net 停止记录时如何接收事件 的相关文章

随机推荐

  • 正则表达式:匹配第一个下划线之前的所有内容以及之后的所有内容

    我有这样的表情 test abc HelloWorld there could be more here 我想要一个采用第一个单词的正则表达式before第一个下划线 所以得到 test I tried A Za z 1 但这没有用 然后我
  • 如何全局安装ESlint?

    我正在尝试安装 ESlint 以将其与 Sublime Text 2 一起用于我的所有本地项目 配置文档 https eslint org docs user guide getting started global installatio
  • 重写泛型类的方法时发生名称冲突

    我试图理解使用以下代码得到的名称冲突错误 import java util import javax swing class Foo
  • 删除截断行末尾的字形

    当在启用了截断行的终端中使用 Emacs 23 时 Emacs 会在每行末尾添加一个美元符号 指示文本继续超出屏幕边缘 这让我很困扰 我想禁用此功能或以某种方式隐藏美元符号 这可能吗 如果是的话会怎样做 尝试用这个 set display
  • 2D 基本运动 UNITY

    目前我的角色在键盘上完美运行 但是当我通过 3 个 UI 按钮将你的动作转换为触摸时 我也尝试过 UI 图像 但成功了 我没有成功 它基本上是向右 向左 跳跃 应该如何做才能使其遵循以下说明 当用户按下方向键时 角色不会停止行走 直到用户释
  • C/C++编译器反馈优化

    有没有人看到过不同程序的真实世界数字 这些程序使用 C C 编译器提供的反馈优化来支持分支预测 缓存预加载功能等 我搜索了它 令人惊讶的是 即使是流行的解释器开发小组似乎也没有检查过效果 将 ruby python php 等性能提高 10
  • Kafka-node突然从偏移量0开始消费

    有时 kafka node 消费者从偏移量 0 开始消费 而其默认行为是仅消费较新的消息 然后它不会切换回默认行为 您知道如何解决这个问题以及会发生什么以及其行为突然发生变化吗 代码非常简单 并且无需更改代码即可完成此操作 var kafk
  • 实体框架 4 的存储库模式

    我曾经使用带有存储库接口的 NHibernate 在 EF 中使用此模式的正确方法是什么 我如何实现这个存储库接口RepositoryBase
  • 打开 Word 文档并使用 PowerShell 指定编码

    我试图告诉 PowerShell 打开一个文本文件并选择某个编码选项 默认情况下 在 Word 中手动打开此文本文件时 它会尝试使用日语编码打开它 因此无法正确显示某些字符 我尝试了很多不同的方法 但没有任何效果 所以我完全陷入困境 该文本
  • 如何展平嵌套 div 以在 CSS 网格中显示它们?

    我从一个应该有两列宽的对象生成一个表 使用 vue js 每列都来自对象的键和值 这相当于以下实际 HTML div div div this is something long on the first row div div short
  • 如何在 C 程序中将日志逻辑与业务逻辑分离?那么在 C++ 中呢?

    我目前正在使用 C 进行编码 并且有很多 printf 以便有时可以跟踪应用程序的流程 问题是 有时我想要比其他人更多的细节 所以我通常花时间注释 取消注释我的 C 代码 这样我就可以获得适当的输出 使用 Java 或 C 时 我通常可以使
  • Rust:从 std::Rc 智能指针向量实现迭代器

    我从 Rust 开始 我已经面临数据所有权的问题 我想实现一个名为的通用结构Port
  • 使用链表实现优先级队列

    我已经使用链表实现了优先级队列 在这个优先级队列中 最小的int值具有最高的值 因此通过调用remove方法 最小的方法将被删除 节点类代码 public class Node public int iData public Node ne
  • C#中的委托和C++中的函数指针有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 c 中有函数指针吗 https stackoverflow com questions 2738850 are there function pointers in c 我有兴趣找出两者之间的区别de
  • 与 libQt5Core 的链接

    我使用在线安装程序安装了 Qt5 4 在 ubuntu 14 上运行 我正在尝试编译我的 C 源代码并链接到 libQt5Core 但 ld 抛出错误 make g Wall test o Party o Communication o F
  • (de)使用 System.Text.Json 序列化流

    我正在尝试使用将对象序列化为 MemoryStreamSystem Text Json JsonSerializer 我无法在文档中找到其实现 方法 有人可以分享使用 System Text Json 进行序列化和反序列化的示例实现吗 UP
  • 使用 LINQ 模拟 SQL Server 2012 Lag Window 函数

    我有一些示例数据 如下所示 编辑 我没有 SQL Server 2012 create table base pat id int admission date date discharge date date go insert into
  • 使用 oauth2 和 AngularJS 在 Web API 中向令牌发送附加参数

    我有一个用 AngularJS 编写的应用程序 它通过 oauth 2 联系 Web API 进行身份验证 该核心部分一切正常 但我需要传递其他参数来评估登录 clientID 并设置记住我类型功能 记住 从 Angular 方面来看 它看
  • Nunit - 没有发现测试[没有错误消息]

    单元拒绝在程序集中发现或运行我的测试 这并不是 Unit 产生 无法在程序集中找到测试 之类的错误消息的情况 它根本没有发现我有测试 我右键单击测试方法 测试输出显示 发现测试开始 发现测试已完成 0 发现 0 00 00 0260026
  • log4net 停止记录时如何接收事件

    Log4net 有点太擅长不抛出错误了 我正在尝试创建某种处理程序 如果 log4net 无法启动或死亡并且无法再记录 则会触发该处理程序 我知道应用程序设置键可以打开 log4net 的内部调试 log4net Internal Debu