2014-10-01 2 views
2

log4Net 구성에 두 개의 XML 파일이 있습니다. 하나는 파일에 기록하고, 다른 하나는 콘솔에 기록하는 것입니다. 내가 파일에 기록하도록 구성 XML 파일을 사용하여 내 웹 애플리케이션을 실행하면log4Net이 콘솔에 예상대로 로깅되지 않습니다.

protected void Application_Start() 
{ 
    AreaRegistration.RegisterAllAreas(); 
    RegisterGlobalFilters(GlobalFilters.Filters); 
    RegisterRoutes(RouteTable.Routes); 
    //Initialize Log4Net 
    XmlConfigurator.Configure(new System.IO.FileInfo("C:\\temp2\\DataTables_Examples\\DataTables_Examples\\Console.config")); 
    log.Info("Initializing Log4Net..."); 
    Debug.WriteLine("MvcApplication - Initializing Log4Net..."); 

} 

, 그것은 나에게주는 완벽하게 잘 작동 : 나는 위해 Application_Start() 메소드 내 Global.asax.cs 파일에 읽기됩니다 어떤 파일 제어 다음 출력 :

2014-10-01 13:34:56,596 [6] ERROR CSED.Database 
Error Number: 0 
Error Code: -2147467259 
Message: Authentication to host 'localhost' for user 'webapp' using method 'mysql_native_password' failed with message: Access denied for user 'webapp'@'localhost' (using password: YES) 
Source: MySql.Data 
StackTrace: at MySql.Data.MySqlClient.Authentication.MySqlAuthenticationPlugin.AuthenticationFailed(Exception ex) 
    at MySql.Data.MySqlClient.Authentication.MySqlAuthenticationPlugin.ReadPacket() 
    at MySql.Data.MySqlClient.Authentication.MySqlAuthenticationPlugin.Authenticate(Boolean reset) 
    at MySql.Data.MySqlClient.NativeDriver.Authenticate(String authMethod, Boolean reset) 
    at MySql.Data.MySqlClient.NativeDriver.Open() 
    at MySql.Data.MySqlClient.Driver.Open() 
    at MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings) 
    at MySql.Data.MySqlClient.MySqlPool.CreateNewPooledConnection() 
    at MySql.Data.MySqlClient.MySqlPool..ctor(MySqlConnectionStringBuilder settings) 
    at MySql.Data.MySqlClient.MySqlPoolManager.GetPool(MySqlConnectionStringBuilder settings) 
    at MySql.Data.MySqlClient.MySqlConnection.Open() 
    at CSED.Database.createMySqlConnection(String connectionString) in c:\DataTables\CSED\CSED\Database.cs:line 395 

이것은 잘됩니다. 나는 의도적으로이 예외가 던져 질 수 있도록 web.config의 연결 문자열에서 암호를 변경했습니다. 그런 다음 log4Net을 콘솔에 로그하도록 구성하려고했는데 동일한 결과가 예상됩니다. 아니! 콘솔에 대한

내 구성 파일은 다음과 같다 :이

<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/> 
    </configSections> 
    <log4net>  
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> 
     <!-- ConsoleAppender uses PatternLayout --> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%d [%t] %-5p %c %m%n" />   
     </layout> 
    </appender> 
    <root> 
     <level value="DEBUG"/> 
     <appender-ref ref="ConsoleAppender" /> 
    </root> 
    </log4net> 
</configuration> 

아무것도 이상한.

비교를 위해 파일 로깅을위한 구성입니다.

<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/> 
    </configSections> 
    <log4net>  
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" > 
     <file value="C:\\temp2\\DataTables_Examples\\DataTables_Examples\\log.txt"/> 
     <appendToFile value="true" /> 
     <rollingStyle value="Size" /> 
     <maxSizeRollBackups value="5" /> 
     <maximumFileSize value="10MB" /> 
     <staticLogFileName value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%d [%t] %-5p %c %m%n" />   
     </layout> 
    </appender> 
    <root> 
     <level value="DEBUG"/> 
     <appender-ref ref="LogFileAppender" /> 
    </root> 
    </log4net> 
</configuration> 

을 그리고 내 웹 애플리케이션을 실행할 때 아직 나는 다음과 같은 얻을 :이 작품

log4net: log4net assembly [log4net, Version=1.2.13.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a]. Loaded from [C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\ff9156a3\74c0a06a\assembly\dl3\c94489ac\1765076f_58c5cf01\log4net.dll]. (.NET Runtime [4.0.30319.18444] on Microsoft Windows NT 6.1.7601 Service Pack 1) 
log4net: defaultRepositoryType [log4net.Repository.Hierarchy.Hierarchy] 
log4net: Creating repository for assembly [DataTables_Examples, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null] 
log4net: Assembly [DataTables_Examples, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null] Loaded From [C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\ff9156a3\74c0a06a\assembly\dl3\898de284\55bca487_97ddcf01\DataTables_Examples.dll] 
log4net: Assembly [DataTables_Examples, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null] does not have a RepositoryAttribute specified. 
log4net: Assembly [DataTables_Examples, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null] using repository [log4net-default-repository] and repository type [log4net.Repository.Hierarchy.Hierarchy] 
log4net: Creating repository [log4net-default-repository] using type [log4net.Repository.Hierarchy.Hierarchy] 
log4net: configuring repository [log4net-default-repository] using file [C:\temp2\DataTables_Examples\DataTables_Examples\Console.config] 
log4net: configuring repository [log4net-default-repository] using stream 
log4net: loading XML configuration 
log4net: Configuring Repository [log4net-default-repository] 
log4net: Configuration update mode [Merge]. 
log4net: Logger [root] Level string is [DEBUG]. 
log4net: Logger [root] level set to [name="DEBUG",value=30000]. 
log4net: Loading Appender [ConsoleAppender] type: [log4net.Appender.ConsoleAppender] 
log4net: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Setting Property [ConversionPattern] to String value [%d [%t] %-5p %c %m%n] 
log4net: Converter [d] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [literal] Option [ [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [t] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [literal] Option [] ] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [p] Option [] Format [min=5,max=2147483647,leftAlign=True] 
log4net: Converter [literal] Option [ ] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [c] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [literal] Option [ ] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [m] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Converter [n] Option [] Format [min=-1,max=2147483647,leftAlign=False] 
log4net: Setting Property [Layout] to object [log4net.Layout.PatternLayout] 
log4net: Created Appender [ConsoleAppender] 
log4net: Adding appender named [ConsoleAppender] to logger [root]. 
log4net: Hierarchy Threshold [] 
MvcApplication - Initializing Log4Net... 
log4net: Creating repository for assembly [CSED, Version=1.3.0.0, Culture=neutral, PublicKeyToken=null] 
log4net: Assembly [CSED, Version=1.3.0.0, Culture=neutral, PublicKeyToken=null] Loaded From [C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\ff9156a3\74c0a06a\assembly\dl3\d3a2a365\45b5ee3b_90ddcf01\CSED.dll] 
log4net: Assembly [CSED, Version=1.3.0.0, Culture=neutral, PublicKeyToken=null] does not have a RepositoryAttribute specified. 
log4net: Assembly [CSED, Version=1.3.0.0, Culture=neutral, PublicKeyToken=null] using repository [log4net-default-repository] and repository type [log4net.Repository.Hierarchy.Hierarchy] 
log4net: repository [log4net-default-repository] already exists, using repository type [log4net.Repository.Hierarchy.Hierarchy] 
Database - connection string name: LocalMySqlServer 
Database - connString: port=3306;server=localhost;user id=webapp;password=foobar;database=editor;pooling=True;minpoolsize=2;maxpoolsize=4 
BasicSSPController - Processing... 
A first chance exception of type 'MySql.Data.MySqlClient.MySqlException' occurred in MySql.Data.dll 

은 Console.config 파일은 확실히 log4Net에 의해 읽어되고있다. 그렇다면 파일에 로깅 할 때처럼 콘솔을 출력하지 않는 이유는 무엇입니까? conversionPattern은 둘 다 동일합니다. 내가 얻는 것은 콘솔의 하단에있는 한 줄입니다. 어딘가에서 뭔가 빠졌어요.

+0

어리석은 아이디어지만, stdout을 다른 프로세스로 리디렉션하는 방식으로 콘솔 앱을 시작할 가능성이 있습니까? ConsoleAppender 만 영향을 받습니까? – samy

답변

0

귀하의 어셈블리 중 하나가 log4net을 사용하는 것으로 보입니다. 거기에는 갈등이있을 수 있습니다.

+0

이 웹 응용 프로그램을 참조하는 dll 프로젝트를 먼저 만들었습니다. dll 프로젝트의 이름은 CSED.dll입니다. 또한 log4Net을 사용하여 예외를 캡처하지만 log4Net을 초기화하지 않습니다. 웹 응용 프로그램에서만 그렇게합니다. 난 정말이 "저장소"물건을 이해하고 왜 CSED.dll 및 웹 애플 리케이션을위한 하나를 만드는 것입니다. 저장소가 하나뿐이라면 어떻게 해결할 수 있습니까? – Alan

+0

a) 비교를 위해 log4net 섹션을 게시 할 수 있습니까? b) appsettings에서 log4net 내부 로깅을 활성화 했습니까? (예 : 와 같이) 설정하면 해제 할 수 있습니다. c) 이것이 동일한 문제입니까? (http://stackoverflow.com/questions/22596406/exception-when-adding-log4net-config) – celper

+0

예 그 설정을 true로 설정했습니다. 거짓으로 설정하고 webapp를 다시 실행했습니다. 하지만 아무 것도 바뀌지 않았습니다. – Alan

관련 문제