2014-01-10 5 views
0

몇 가지 방법을 시도해 보았지만 Log4Net 파일 로거는 내 MVC3 웹 앱에 아무것도 로깅하지 않습니다.Log4Net이 오류 로그를 쓰지 않는 이유는 무엇입니까?

내가 무엇을 놓치고 있습니까? 어떤 오류도 발생하지 않습니다.

log4net dll이 응용 프로그램에 추가되고 로컬 복사본을 가리 킵니다.

1 주 Web.config의 :

<appSettings> 
    <add key="Log4NetConfigFilename" value="log4net.config" /> 
    <add key="Log4NetConfigFilePath" value="C:\DEV\App\source\App.Web\log4net.config" />  
    </appSettings> 

2 Global.asax.cs

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

3 Log4net.config 파일 :

<?xml version="1.0" encoding="utf-8" ?> 
<log4net> 
    <logger name="MyLogger"> 
    <level value="ALL" /> 
    <appender-ref ref="MyRollingLogFileAppender" /> 
    </logger> 

    <appender name="MyRollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <param name="File" value="C:\\Support\Logs\\logs.log" /> 
    <param name="AppendToFile" value="true" /> 
    <param name="RollingStyle" value="Size" /> 
    <param name="MaxSizeRollBackups" value="10" /> 
    <param name="MaximumFileSize" value="1024KB" /> 
    <param name="StaticLogFileName" value="true" /> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
    <layout type="log4net.Layout.PatternLayout, log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821">  
     <param name="ConversionPattern" value="%date{MM-dd-yyyy HH:mm:ss} [%-5level] [%identity] - %message %newline" />  
    </layout> 
    </appender> 
</log4net> 

#4 I have a folder created C:\Support\Logs 
#5 The log4net.config file is located in C:\DEV\App\source\App.Web\log4net.config 

6) 컨트롤러 내가 노력하고 있어요 문자열을 기록하는 방법

These 2 values getting in the controller correctly 

using log4net; 
using log4net.Config; 
using System.Configuration; 
namespace My.Controllers 
{  
    public class TestController : MyBaseController 
    { 
     private static readonly ILog _log = LogManager.GetLogger("MyLogger"); 
     private static readonly string _log4netConfigFilename = ConfigurationManager.AppSettings["Log4NetConfigFilename"]; 
     private static readonly string _log4netConfigFilePath = ConfigurationManager.AppSettings["Log4NetConfigFilePath"]; 

    [HttpGet] 
    public ActionResult Index() 
    {    
      if (_log.IsDebugEnabled) <-- ALWAYS FALSE     
       _log.DebugFormat("Processing Index() view"); <-- NEVER GETS WRITTEN 

      var model = new MyModel();    
      return View(model); 
     } 
    } 
} 

답변

2

구성 파일이 보이지 않는 것처럼 작동합니다. 다음에 App_Start 코드를 업데이트하여 구성 파일을보고 그것을 설정 명시 적으로 시도해보십시오

log4net.Config.XmlConfigurator.Configure(ConfigurationManager.AppSettings["Log4NetConfigFilePath"]); 

나는 순간에 그것을 테스트하지만 그것을 얻는 경우에 볼 수있는 아니에요.

log4net.Config.XmlConfigurator.Configure(new FileInfo(ConfigurationManager.AppSettings["Log4NetConfigFilePath"])); 

그리고 내가 아는 한, 당신이 추가 조립 정보가 필요하지 않습니다를 : Configure를 호출 할 때

0

당신은 경로를 지정하여 사용자 정의 log4net.config를 사용하고 있는지 확인해야 구성의 <layout> 섹션 (나를 오류가 발생했습니다) :

<layout type="log4net.Layout.PatternLayout">  
    <param name="ConversionPattern" value="%date{MM-dd-yyyy HH:mm:ss} [%-5level] [%identity] - %message %newline" />  
</layout> 
관련 문제