2012-03-24 2 views
0

로깅을 위해 ASP.NET 웹 서비스에서 log4net을 사용합니다. log4net에 대한 초기화 논리를 global.asax에 추가했습니다.log4net Windows 서버 2003에 로그 파일 생성 안 함

필자는이 웹 서비스를 win xp, loging works에서 테스트했습니다.

는 그럼 난 Windows 서비스 2003

내가 loging 테스트에 MSI 설치를 통해이 웹 서비스를 전개하지만 작품을 나던. 로그 파일을 만들지 않습니다.

먼저 내 코드를 보여

의 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에

,363,210
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에 permison 편집 : \를 Inetpub \ wwwroot에 \ TXS \ 로그 계정에 대한 : 모든 권한

  • ASPNET 모든 권한
  • 네트워크 서비스 모든 권한
  • IUSR

하지만 도움이되지 않았습니다.

그래서 IIS의 가상 폴더 설정을 편집하여 편집했습니다. 또한 나는 도움을 didnt한다.

나는 그것을 구글이 발견 :

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에서 승리를 테스트했을 때 모든 것이 작동합니다.

누구든지 내게 문제의 근원이 무엇인지 조언 해 줄 수 있습니까?

편집을 할

: 그것은 보안 문제이고, 나는의 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

관련 문제