2014-05-22 2 views
1

서버 (Windows 2008) 및 IIS7에서 로그가 만들어지지 않습니다. 나는 상대 경로뿐만 아니라 절대 경로를 제공했다.Windows Server 2008에서 IIS7에서 Log4net이 작동하지 않습니다.

로그 폴더에 대한 모든 권리를 부여했습니다. 나는 네트워크 사용자, IUsr 및 IIS_IUSRS를 포함하고 모든 사람에게 권한을 부여했습니다. 또한.

이 해당 폴더에 로그를 작성하지 않는

웹 설정에 대한 항목이

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

<log4net> 
<logger name="GeneralLogger"> 
<level value="ALL" /> 
<appender-ref ref="RollingFile" /> 
</logger> 
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> 
<file value="C:\\vhosts\\staging.customerportal.com\\log\\CustomerPortal.log"/> 
<appendToFile value="true"/> 
<datePattern value="yyyyMMdd"/> 
<rollingStyle value="Date"/> 
<filter type="log4net.Filter.LevelRangeFilter"> 
<acceptOnMatch value="true"/> 
<levelMin value="DEBUG"/> 
<levelMax value="FATAL"/> 
</filter> 
<layout type="log4net.Layout.PatternLayout"> 
<conversionPattern value="%-5p %d %5rms %X{addr} %-22.22c{1} %-18.18M - %m%n"/> 
</layout> 
</appender> 
</log4net> 

다음과 같다 나는 웹 설정에서 파일 값 이중 슬래시으로 잘 단일 슬래시를주는 시도했다 아무것도 작동하지 않습니다. 이 코드로도 AssemblyInfo.cs에

를이 코드없이 시도했다

[assembly: XmlConfigurator(ConfigFile="web.config", Watch=true)] 

global.asax.cs의 코드를 AssemblyInfo.cs에서

public class MvcApplication : System.Web.HttpApplication 
{ 
    private static log4net.ILog log = log4net.LogManager.GetLogger(typeof(MvcApplication)); 

    protected void Application_Start() 
    { 
     log4net.Config.XmlConfigurator.Configure(); 

    } 

코드입니다

작동하지 않습니다.

내가 로컬 호스트에 절대 경로를 사용하는 경우 로그가 해당 폴더에 기록됩니다로

제대로

그것은 내가 컨트롤러 파일에서이 두 가지 옵션을 시도했다 서버

에 실패

//private static log4net.ILog log =  
     log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)  ; 
    private static log4net.ILog log = log4net.LogManager.GetLogger("GeneralLogger"); 

존재하지 않는 경로를 시도했지만 폴더를 만들지 못했습니다.

도와주세요. 서버에 log4net을 사용하여 로그를 활성화하는 방법을 알려주십시오.

+0

이 SOU 권한 문제와 비슷합니다. 응용 프로그램 풀이 실행중인 사용자 계정에 로그 폴더에 대한 쓰기 권한이 있는지 100 % 확신합니까? – stuartd

답변

1

logmanager를 구성하기 전에 loggerager를 구성 (실제로는 두 번 구성)하기 위해 Application_Start에서 구성을 호출하여 로거를 초기화합니다.

옵션 1 :

public class MvcApplication : System.Web.HttpApplication 
{ 
private static log4net.ILog log = log4net.LogManager.GetLogger(typeof(MvcApplication)); 

protected void Application_Start() 
{ 
    //Remove: log4net.Config.XmlConfigurator.Configure(); 

} 

그리고 유지 :

[assembly: XmlConfigurator(ConfigFile="web.config", Watch=true)] 

옵션 2 :

public class MvcApplication : System.Web.HttpApplication 
{ 
private static log4net.ILog log; 

protected void Application_Start() 
{ 
    log4net.Config.XmlConfigurator.Configure(); 
    log = log4net.LogManager.GetLogger(typeof(MvcApplication)); 
} 

및 제거 :

//Remove: [assembly: XmlConfigurator(ConfigFile="web.config", Watch=true)] 
관련 문제