【问题标题】:Windsor castle: how do you set log4net filePath dynamically through LoggingFacility温莎城堡:如何通过 LoggingFacility 动态设置 log4net filePath
【发布时间】:2014-09-02 20:55:42
【问题描述】:

我正在使用城堡记录器,使用 log4net 进行记录。这是我的安装设置。我有一个名为 log4net.config 的配置文件,所有 log4net 设置都在其中创建。

container.AddFacility<LoggingFacility>(
          f =>
              f.LogUsing(LoggerImplementation.Log4net)
               .WithConfig(Path.Combine(AssemblyDirectory, "log4net.config")));
              container.AddFacility<TypedFactoryFacility>();

log4net.config 文件中,我将filePath 设置为:

<configuration>
  <log4net>
    <appender name="RollingFileCompositeAppender" type="log4net.Appender.RollingFileAppender">
      <file value="c:\LoggerFolder\MyLogFile.log" />
      .....
  </log4net>
</configuration>

要使用它,我有 ILogger 记录器并使用 logger.Error("xyz");

一切正常。

现在我想在运行时,当用户定义该路径时,将日志文件路径从“c:\LoggerFolder\MyLogFile.log”更改为其他内容。

如何在应用程序运行时动态更改此路径?

【问题讨论】:

    标签: c# .net logging log4net castle


    【解决方案1】:

    Log4net 在监视模式下使用此语法加载;将观察到配置文件的任何更改并重新加载配置文件。所以要想改变日志文件路径,只需改变文件内容设置新的日志文件路径即可。

    您可以通过手动更改某些设置来观察此行为,例如写入日志文件的文件夹名称

    【讨论】:

    • 感谢您的关注。我想到了这一点(一旦用户定义了新的路径/文件名,然后打开并修改 log4net.config 文件以更新 filePath)。我唯一担心的是,如果由于某种原因应用程序无权修改此文件,那该怎么办。这可能永远不会发生,但以防万一。这就是我寻找不同解决方案的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多