1

我想使用 log4net 在两个不同的文件中写入日志,一个在全局日志文件中,另一个用于特定的用户文件,为此我在 appender 中设置参数,如下所示

<param name="File" value="D:\Projects\Web\Web\Services\Log\%property{LogFileName}" />

并定义了一个这样的函数

public void AddInfo(string message)
{
    log4net.GlobalContext.Properties["LogFileName"] = this.UserId + ".txt";
    log4net.Config.XmlConfigurator.Configure();
    Logger.Info(message);

    log4net.GlobalContext.Properties["LogFileName"] = "ServiceLog.txt";
    log4net.Config.XmlConfigurator.Configure();
    Logger.Info(message);        
}

这一切都在工作,每个日志都成功写入两个不同的文件。

我担心的是,如果我们考虑性能,这种方法是否正确?

对于每个日志,它将配置 log4net 两次,是否会对性能产生负面影响?

4

1 回答 1

1

创建两个文件附加程序 - 一个用于用户日志(带有文件名模式),另一个用于全局日志:

<appender name="UserFileAppender" type="log4net.Appender.RollingFileAppender">
  <file type="log4net.Util.PatternString" value="%property{userId}.txt" />
  ...
</appender>
<appender name="GlobalFileAppender" type="log4net.Appender.RollingFileAppender">
  <file value="log.txt" />
  ...
</appender>
<root>
  <level value="DEBUG" />
  <appender-ref ref="UserFileAppender" />
  <appender-ref ref="GlobalFileAppender" />
</root>

然后每个用户只配置一次 log4net:

GlobalContext.Properties["userId"] = "Bob";
XmlConfigurator.Configure();

并在您的应用程序中使用记录器。

于 2013-06-03T09:02:17.480 回答