log4net MemoryAppender无法正常工作 [英] log4net MemoryAppender not working

查看:199
本文介绍了log4net MemoryAppender无法正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用log4net登录我的应用程序.我的FileAppender运行正常,但是MemoryAppender出现问题.

I'm using log4net to log in my app. My FileAppender is working fine, but I'm having problems with MemoryAppender.

这是我的配置文件.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    </configSections>
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
  <param name="File" value="Envision.log" />
  <param name="AppendToFile" value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <param name="Header" value="" />
    <param name="Footer" value="" />
    <param name="ConversionPattern" value="%d [%t] %-5p %m%n" />
  </layout>
</appender>
<appender name="MemoryAppender" type="log4net.Appender.MemoryAppender">

</appender>
<root>
  <level value="ALL" />
  <appender-ref ref="LogFileAppender" />
  <appender-ref ref="MemoryAppender" />
</root>
</log4net>
</configuration>

我使用此代码来设置配置文件.

I use this code to setup the config file.

FileInfo file = new FileInfo(configPath);
log4net.Config.XmlConfigurator.Configure(file);
file = null;

就像我说的那样,FileAppender的效果很好.但是我似乎无法得到任何事件. 我已经尝试使用类似的方法来获取MemoryAppender.

Like I said, the FileAppender works great. But I can't seem to get any events. I've tried using something like this to get the MemoryAppender.

Hierarchy hierarchy = LogManager.GetRepository() as Hierarchy;
MemoryAppender mappender = hierarchy.Root.GetAppender("MemoryAppender") as MemoryAppender;

我尝试使用:

var events = mappender.GetEvents()

记录某些内容后,事件始终为空.我尝试用代码而不是使用配置文件来设置FileAppender和MemoryAppender,但我也一样,FileAppender可以正常工作,但似乎无法从MemoryAppender获取任何事件.好奇我是否了解MemoryAppender对吗?我还尝试设置一个线程,该线程循环检查GetEvents是否为空,并且在注销时始终返回为空.我尝试在MemoryAppender上将Threshold设置为Core.Level.All,但这没有任何改变.

after logging something, and events is always empty. I've tried setting up the FileAppender and MemoryAppender in code instead of using the config file, and I get the same, the FileAppender works fine, but can't seem to get any events from MemoryAppender. Curious if I'm understanding MemoryAppender right? I also tried setting up a thread that loops checking for the GetEvents to not be empty, and while logging away it always comes back empty. I've tried setting the Threshold to Core.Level.All on the MemoryAppender but that did not change anything.

感谢任何方向.我环顾四周,从所看到的站点中,我无法分辨出我在做什么.

Thanks for any direction. I've looked around, and from the sites I've seen, I can't tell what I'm doing different.

即使简单的操作也不起作用.事件长度始终为零;

Even something as simple as this does not work. events length is always zero;

public partial class MainWindow : Window {
    public MainWindow() {
        InitializeComponent();

        MemoryAppender appender = new MemoryAppender();
        ILog logger = LogManager.GetLogger("foo");
        BasicConfigurator.Configure(appender);

        logger.Error("Should work");
        var events = appender.GetEvents();
    }
}

推荐答案

我知道了.我错误地使用了Compact Framework .dll.一旦意识到切换到.net 2.0版本,这导致找不到log4net命名空间出现问题,因此我对此进行了搜索,并意识到我需要将.net Framework 4客户端配置文件更改为.net Framework 4.我现在正在按预期进行活动.

I figured it out. I was using the Compact Framework .dll by mistake. Once I realized that I switched to the .net 2.0 version, which caused a problem with log4net namespace not being found, so I did a search on that and realized I needed to change my .net Framework 4 client Profile to .net Framework 4. I'm now getting the events as expected.

这篇关于log4net MemoryAppender无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆