以下是我需要通过Log4net实现的。 我的应用程序有一个第三方DLL,它将日志同步传递给Splunk RelayLogsToSplunk(字典)。 API采用字符串字典并将它们同步发送到splunk。同步功能显着减慢了我的应用程序。 我需要扩展Log4net功能(可能是appenderskeleton类),它可以适应这个第三方API并使日志记录异步。换句话说,logger和API之间的层,这将使操作异步。任何人都可以帮我设计一下吗? 谢谢 苏达
答案 0 :(得分:0)
如果您使用的是最新版本的log4net,则Log4Net.Async库将是最佳观看位置 - 之前的版本在源样本中包含AsyncAppender
。
为了获得最佳性能,您还希望缓冲日志事件,因此AsyncForwardingAppender
可能就是您所需要的全部内容,并且只需Splunk
appender,您可以使用Nuget package来安装它。或者,如果您认为需要更多自定义的东西,请获取源代码,并且有很多关于如何进行异步日志记录的示例。
有一点需要注意from the documentation:
如果Log4Net.Async库仅在非代码中引用(例如a log4net log.config文件),然后VS构建过程不会 自动将Log4Net.Async dll复制到build文件夹中 使用Log4Net.Async引用其他项目的项目。这个 即使Copy Local设置为" True"。
也会出现为了解决这个问题,我们的一些用户创建了一个虚拟类 唯一的目的是扩展RingBuffer类,而不是实际做 任何东西或任何地方都可以使用。