【问题标题】:log4net dont create log file on windows server 2003log4net 不在 Windows Server 2003 上创建日志文件
【发布时间】:2012-03-24 08:04:57
【问题描述】:

我在 ASP.NET Web 服务中使用 log4net 进行日志记录。我将 log4net 的初始化逻辑添加到 global.asax。

我在 win xp 上测试了这个网络服务,登录成功。

然后我通过 Windows Service 2003 上的 msi 安装程序部署了这个 Web 服务。

我测试了日志,但它不起作用。它不会创建日志文件。

首先我展示我的代码:

web.config

<?xml version="1.0"?>
<configuration>

  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false"/>
  </configSections>

  <appSettings>
  </appSettings>

  <connectionStrings/>

  <log4net configSource="config.log4net" />

  <system.web>    
    <authorization>
      <allow users="?" />
    </authorization>
    <compilation debug="true" ></compilation>
    <authentication mode="None" />
  </system.web>

</configuration>

log4net 配置

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
    <appender name="RollinFileAppender" type="log4net.Appender.RollingFileAppender">
        <param name="File" value="logs\\log" />
        <param name="AppendToFile" value="true" />
        <param name="MaxSizeRollBackups" value="10" />
        <param name="MaximumFileSize" value="10" />
        <param name="RollingStyle" value="Date" />
        <param name="DatePattern" value="_yyMMdd.\t\x\t" /> 
        <param name="StaticLogFileName" value="false" />
        <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p - %m%n" />
        </layout>
    </appender>

    <logger name="mylogger">
        <level value="DEBUG" />
        <appender-ref ref="RollinFileAppender"/>
    </logger>
</log4net>

global.asax

public class Global : System.Web.HttpApplication
{    
    protected void Application_Start(object sender, EventArgs e)
    {
        XmlConfigurator.Configure();
    }
}

我在 WS 类中创建记录器对象:

    public static ILog _logger = LogManager.GetLogger("mylogger");

在网络方法中的用法:

 _logger.Info(input);

首先我认为这是安全问题。

所以我为帐户编辑了文件夹 C:\Inetpub\wwwroot\txs\Logs 上的权限:

  • ASPNET 完全控制
  • 网络服务完全控制
  • IUSR 完全控制

但这并没有帮助。

所以我在 IIS 上编辑了虚拟文件夹的设置以进行写入。我也没帮忙。

我在谷歌上找到了这个:http://neilkilbride.blogspot.com/2008/03/log4net-problems-logging-from-web-app.html

所以我试了一下。这是编辑的web.config

<?xml version="1.0"?>
<configuration>

  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false"/>
  </configSections>

  <appSettings>
    <add key="log4net.Internal.Debug" value="true"/>  
  </appSettings>

  <connectionStrings/>

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

  <log4net configSource="config.log4net" />

  <system.web>    
    <authorization>
      <allow users="?" />
    </authorization>
    <compilation debug="true" ></compilation>
    <authentication mode="None" />
  </system.web>

</configuration>

它没有帮助。没有创建日志文件。当我在 win Xp 上进行测试时,一切正常。

谁能告诉我问题的根源是什么。

已编辑:这是安全问题,我将其放入 web.config:

<trust level="High" />

问题解决了。

【问题讨论】:

    标签: asmx log4net windows-server-2003


    【解决方案1】:

    尝试给出日志文件的完整路径,您也可以尝试将路径中的双斜杠“\”替换为单个“\”。

    <log4net>
        <appender name="RollinFileAppender" type="log4net.Appender.RollingFileAppender">
            ...
            <param name="File" value="c:\logs\log" />
            ...
        </appender>
    </log4net>
    

    或尝试查看文件的创建位置

    RollingFileAppender rootAppender = (RollingFileAppender)((log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository()).Root.Appenders[0];
    string filename = rootAppender.File;
    

    或者您可以重新检查服务器上的写入权限问题。在服务器上比 xp 更复杂。

    【讨论】:

      猜你喜欢
      • 2012-03-11
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      相关资源
      最近更新 更多