2014-03-12 3 views
5

프로젝트 래퍼에 Common.logging 및 log4net을 사용하려면 로깅 프로젝트에 log4net.config 파일을 만들고 web.config 파일을 구성했지만 예외가 발생했습니다. 아무것도 기록하지 말라. (오류, 정보 등). 문제가 web.config 파일에 있다고 생각했지만 체크 아웃 한 결과 아무 것도 보이지 않습니다.공용 로깅 log4net 파일 -watch

예외 오류는 오류가 공통/로깅 구성 섹션 핸들러 만들기 발생

이다 형 'Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net를 생성 할 수 없습니다

DLL의

Common.Logging.2.0.0 
Common.Logging.Log4Net.2.0.1 
log4net.1.2.10 

래퍼 클래스

using System; 
using System.Diagnostics; 
using Common.Logging; 
using System.Reflection; 

namespace LoggerL 
{ 
    public class Logger 
    { 
     private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 

     //static Logger() 
     //{ 
      // XmlConfigurator.Configure(); 
     //} 

     public static void Info(string msg = "") 
     { 
      var method = new StackFrame(1).GetMethod(); 
      var name = method.DeclaringType.FullName + "." + method.Name + "("; 

      foreach (var item in method.GetParameters()) 
      { 
       name += item.ParameterType.Name + " " + item.Name + ", "; 
      } 

      name = name.Substring(0, name.Length - 2) + ")" + " " + msg; 

      log.Info(name); 
     } 

     public static void Error(Exception ex) 
     { 
      var method = new StackFrame(1).GetMethod(); 
      var name = method.DeclaringType.FullName + "." + method.Name + "("; 

      foreach (var item in method.GetParameters()) 
      { 
       name += item.ParameterType.Name + " " + item.Name + ", "; 
      } 

      name = name.Substring(0, name.Length - 2) + ")"; 

      name += ")"; 

      log.Error(name, ex); 
     } 
    } 
} 

web.config 파일

<configuration> 
    <configSections> 
    <sectionGroup name="common"> 
     <section name="logging" 
       type="Common.Logging.ConfigurationSectionHandler, Common.Logging" /> 
    </sectionGroup> 
    </configSections> 
    <common> 
    <logging> 
     <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net"> 
     <arg key="configType" value="FILE-WATCH" /> 
     <arg key="configFile" value="~/bin/log4net.config" /> 
     </factoryAdapter> 
    </logging> 
    </common> 
</configuration> 

log4net.config 파일

<?xml version="1.0" encoding="utf-8" ?> 

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

    <log4net> 
    <root> 
     <level value="INFO" /> 
     <appender-ref ref="DatabaseAppender" /> 
    </root> 

    <appender name="DatabaseAppender" type="log4net.Appender.AdoNetAppender"> 
     <bufferSize value="1" /> 

     <connectionType value="System.Data.SqlClient.SqlConnection, 
            System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     <connectionString value="data source=MyServer; initial catalog=MyDB;integrated security=false; 
              persist security info=True;User ID=MyUser;Password=MyPass" /> 
     <commandText 
      value="INSERT INTO [Log] 
          ([Date],[Thread],[Level],[Logger], [Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" /> 
     <parameter> 
     <parameterName value="@log_date" /> 
     <dbType value="DateTime" /> 
     <layout type="log4net.Layout.RawTimeStampLayout" /> 
     </parameter> 
     <parameter> 
     <parameterName value="@thread" /> 
     <dbType value="String" /> 
     <size value="255" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%thread" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@log_level" /> 
     <dbType value="String" /> 
     <size value="50" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%level" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@logger" /> 
     <dbType value="String" /> 
     <size value="255" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%logger" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@message" /> 
     <dbType value="String" /> 
     <size value="4000" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%message" /> 
     </layout> 
     </parameter> 
     <parameter> 
     <parameterName value="@exception" /> 
     <dbType value="String" /> 
     <size value="2000" /> 
     <layout type="log4net.Layout.ExceptionLayout" /> 
     </parameter> 
    </appender> 
    </log4net> 
</configuration> 
+0

어쩌면 당신의 factoryAdapter의 설정이를 시도 이 응용 프로그램에 적용 할 수 있지만 언제든지 'StackFrame'을 가져 오는 것은 비쌉니다. 성능을 위해서'StringBuilder' 대신'string + string'을 사용하는 것은 말할 필요도 없습니다. 마지막으로 앱이 로깅의 아티팩트로 크롤링되기를 원합니다. –

답변

0

당신은 그렇지 않은

<common> 
<logging> 
    <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4net1211">