如何在log4net中以编程方式添加remotingappender

时间:2012-04-19 05:49:42

标签: c# log4net

当我按照xml配置为remotingappender配置log4net时,一切正常。

<log4net>
  <appender name="RemotingAppender" type="log4net.Appender.RemotingAppender" >
    <sink value="tcp://localhost:8085/LoggingSink" />
    <lossy value="false" />
    <bufferSize value="1" />
    <onlyFixPartialEventData value="true" />
  </appender>
  <root>
    <level value="ALL" />
    <appender-ref ref="RemotingAppender" />
  </root>
</log4net>

我想在代码中做同样的事情。我搜索了一个小小的位置,找到了如下的例子。但我无法让它发挥作用。

        ILog log = log4net.LogManager.GetLogger("logName");
        Repository.Hierarchy.Logger l = (Repository.Hierarchy.Logger)log.Logger;

        // set level
        l.Level = l.Hierarchy.LevelMap["ALL"];
        // create appander
        Appender.RemotingAppender remotingAppender = new Appender.RemotingAppender();
        remotingAppender.Name = "custom";
        remotingAppender.Sink = "tcp://localhost:8085/LoggingSink";
        remotingAppender.Lossy = false;
        remotingAppender.BufferSize = 1;
        //remotingAppender.Fix = log4net.Core.FixFlags.All;
        // create pattern
        log4net.Layout.PatternLayout layout = new log4net.Layout.PatternLayout();
        layout.ConversionPattern = "%d [%thread] %-5p %c [%a] - %m [%line] [%M]%n";
        layout.ActivateOptions();

        remotingAppender.Layout = layout;
        remotingAppender.ActivateOptions();

        // add appender
        l.AddAppender(remotingAppender);
        // perform logging (doesnt work)
        log.Warn("my warning");
        log.Error("my error");

我的代码中缺少什么?

2 个答案:

答案 0 :(得分:0)

尝试log4net.Config.BasicConfigurator.Configure(...) oveloads中的一个。

答案 1 :(得分:0)

我终于开始工作了。我首先加载和xml配置几乎是空的。然后我把具有相同模式字符串的模式布局作为远程监听器。我修改过的xml文件如下:

<log4net>
  <root>
    <level value="ALL" />
  </root>
</log4net>

我在我的应用程序开始时加载此配置(program.c)

log4net.Config.XmlConfigurator.Configure(file)