2012-03-24 3 views
0

Я использую log4net в веб-службе ASP.NET для ведения журнала. Я добавил логику init для log4net в global.asax.log4net не создает файл журнала на сервере Windows 2003

Я протестировал этот веб-сервис на win xp, выполнив вход в систему.

Тогда я разворачивал этот веб-сервис, с помощью установщика MSI на службы Windows 2003.

Я испытываю Loging, но он не работает. Он не создает файл журнала.

Сначала я показываю мой код:

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); 

Сначала я думаю, что это проблема безопасности.

Так я редактировал permison на папку C: \ Inetpub \ Wwwroot \ TXS \ Logs для учетных записей:

  • ASPNET Полный доступ
  • Network Service для полного контроля
  • IUSR Полный доступ

Но это не помогло.

Поэтому я отредактировал настройки в виртуальной папке на IIS для записи. Также я не помог.

Я Google это и нашел это: 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> 

Это не помогло. Файл журнала не создается. Когда я тестировал на выигрыш Xp, все работает.

Может кто-нибудь дать мне совет, что является корень проблемы.

EDITED: Это проблема безопасности, я ставлю web.config:

<trust level="High" /> 

и проблема была решена.

ответ

2

Попробуйте указать полный путь к файлу журнала, вы также можете попытаться заменить двойную косую черту «\» на свой путь на один «\».

<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.

+1

Этот код поможет мне найти еще одну проблему – kobe

Смежные вопросы