Spring.NET의 로그 예외가 어떤 이유인지 알고 싶습니다. 이유는 무엇입니까? 두 가지 일반적인 시나리오를 발견했습니다.Log4net 또는 nlog를 사용하여 Spring.NET에서 예외를 기록하는 가장 좋은 방법
1. IThrowAdvice를 사용하십시오.
throws advice와 메소드 AfterThrowing에서 handle/log 예외를 생성했습니다.
namespace Aspects
{
public class ExLogThrowsAdvice : IThrowsAdvice
{
private ILog _logger;
public ExLogThrowsAdvice()
{
_logger = LogManager.GetLogger("Error_file");
}
public void AfterThrowing(MethodInfo methodInfo,
Object []args, Object target, Exception exception)
{
_logger.Error(exception);
}
}
}
및 로깅 예 Log4net위한 구성하는 Common.Loggin의 API (Common Loggin API)를 사용한다.
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging"/>
</sectionGroup>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
<log4net>
<appender name="ErrorFileAppender"
type="log4net.Appender.FileAppender">
<file value="errors.txt"/>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="FATAL" />
</filter>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date%newline%username%newline[%thread] %message %newline"/>
</layout>
</appender>
<root>
<level value="ERROR"/>
<appender-ref ref="ErrorFileAppender"/>
</root>
</log4net>
마지막으로, businees 계층에서 개체에 대한 프록시를 만듭니다.
<!--ex log advice-->
<object id="theExLogAdvice" type="Aspects.ExLogThrowsAdvice, ExceptionLogging"/>
<!--auto proxy creator-->
<object type="Spring.Aop.Framework.AutoProxy.TypeNameAutoProxyCreator, Spring.Aop">
<property name="TypeNames" value="Aspects*"/>
<property name="InterceptorNames">
<list>
<value>theExLogAdvice</value>
</list>
</property>
</object>
이것은 첫 번째 개념입니다. 내가 발견 한 두 번째는 Spring Aspect 라이브러리에서 예외 처리를 사용하는 것이다. Spring.NET
에서
2.Exception 측면은 내가 로그 예외 핸들러를 만들고 싶습니다이 핸들러는 Log4net 로거를 사용합니다. 예외
처리기 :
<object id="exLogHandler"
type="Spring.Aspects.Exceptions.LogExceptionHandler, Spring.Aop">
<property name="LogName" value="???"/>
<property name="LogLevel" value="Error"/>
</object>
다음은 예외 핸들 조언이 핸들러를 사용 :
<object id="exLogAspect"
type="Spring.Aspects.Exceptions.ExceptionHandlerAdvice, Spring.Aop">
<property name="ExceptionHandlerDictionary">
<dictionary>
<entry key="log" ref="exLogHandler"/>
</dictionary>
</property>
<property name="ExceptionHandlers">
<list>
<value>on exception name SomeException log 'Ex:' + #e</value>
</list>
</property>
나는 두 번째 방법이 좋은 경우에 확실하지 않다. 어쩌면 어리 석다.
Log4net 로거를 사용하려면 LogExceptionHandler를 구성 할 수 있습니까?