【问题标题】:How reload configuration file on server如何在服务器上重新加载配置文件
【发布时间】:2013-08-06 11:59:41
【问题描述】:

我的应用程序使用:

  • .NET 4
  • MVC 3
  • Windows Server 2008 R2

我使用log4net 写入日志文件。我的配置文件如下所示:

<configuration>
  <log4net>
    <appender name="FileAppender" type="log4net.Appender.FileAppender">
      <file value="C:\Temp\log.txt">
      <some settings for log4net...>
    </appender>
  <log4net>
</configuration>

我想在应用程序运行时更改文件值,从

&lt;file value="C:\Temp\log.txt"&gt;

&lt;file value="C:\Logs\MyAppLog.txt"&gt;

当我在我的计算机 (localhost) 上运行应用程序时效果很好,但是当我在服务器上运行应用程序时出现问题。我更改了配置,但服务器会记住旧配置。为什么服务器不是每次都加载文件?

【问题讨论】:

  • 服务器上是否已经创建了 c:\Logs 文件夹?
  • 是的,在服务器上创建。

标签: c# asp.net-mvc iis log4net windows-server-2008-r2


【解决方案1】:

检查你是否有:

[assembly: log4net.Config.XmlConfigurator(Watch=true)]

Watch 意味着 log4net 将获取配置文件中的更改。您也可以在应用程序配置中进行配置。

<appSettings>
  <add key="log4net.Config" value="log4net.config"/>
  <add key="log4net.Config.Watch" value="True"/>
</appSettings>

如果它停止记录临时目录,并且不在 de logs 目录中启动,则可能是权限问题。授予您的 apppool 用户访问日志目录的权限。

如果这不起作用,您可以启用 log4net 内部调试:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="log4net.Internal.Debug" value="true"/>
    </appSettings>
</configuration>

或:

<configuration>
    ...

    <system.diagnostics>
        <trace autoflush="true">
            <listeners>
                <add 
                    name="textWriterTraceListener" 
                    type="System.Diagnostics.TextWriterTraceListener" 
                    initializeData="C:\tmp\log4net.txt" />
            </listeners>
        </trace>
    </system.diagnostics>

    ...
</configuration>

【讨论】:

  • 服务器有写权限。我是这么认为的,因为我看到他正在写入文件,问题是服务器在任何给定时刻都没有读取或加载配置。
猜你喜欢
  • 2013-11-02
  • 1970-01-01
  • 1970-01-01
  • 2021-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多