프리즘 2.1에서 프리즘 4로 변환 중이고 Log4Net 용 ILoggerFacade 클래스를 작성해야합니다. Prism 2.1의 오래된 코드는 더 이상 작동하지 않습니다. 누구든지 공유 할 의사가있는 ILoggerFacade 클래스의 샘플 코드가 있습니까? 당신의 도움을 주셔서 감사합니다.프리즘 4 Log4Net 용 ILoggerFacade?
9
A
답변
23
나는 그것을 알아 냈다. Prism 2와 매우 유사합니다. 먼저 ILoggerFacade를 구현하는 사용자 정의 로거 클래스를 만듭니다. 여기 내 클래스의 :
using log4net;
using Microsoft.Practices.Prism.Logging;
namespace FsNoteMaster3
{
class Log4NetLogger : ILoggerFacade
{
#region Fields
// Member variables
private readonly ILog m_Logger = LogManager.GetLogger(typeof(Log4NetLogger));
#endregion
#region ILoggerFacade Members
/// <summary>
/// Writes a log message.
/// </summary>
/// <param name="message">The message to write.</param>
/// <param name="category">The message category.</param>
/// <param name="priority">Not used by Log4Net; pass Priority.None.</param>
public void Log(string message, Category category, Priority priority)
{
switch (category)
{
case Category.Debug:
m_Logger.Debug(message);
break;
case Category.Warn:
m_Logger.Warn(message);
break;
case Category.Exception:
m_Logger.Error(message);
break;
case Category.Info:
m_Logger.Info(message);
break;
}
}
#endregion
}
}
다음, 프리즘 4 부트 스트 래퍼 클래스, 사용자 정의 로거 클래스의 새 인스턴스를 반환 CreateLogger()
방법에 재정의를 추가
protected override Microsoft.Practices.Prism.Logging.ILoggerFacade CreateLogger()
{
return new Log4NetLogger();
}
주를 그 정의에 logger 클래스 인 ILog
은 Log4Net 인터페이스이고 LogManager
은 Log4Net 객체입니다.
사용자 코드에서 사용자 지정 로거에 쓰기 (Prism은 자체 로그 항목을 처리 함)는 Prism 2.1과 약간 다릅니다. IoC 컨테이너에서 직접 로거를 해결하거나 ServiceLocator를 사용할 수 있습니다. ServiceLocator
에는 컨테이너에 독립적 인 이점이 있습니다. 즉, 기본 컨테이너가 실제로 중요하지 않음을 의미합니다.
var logger = (Log4NetLogger)ServiceLocator.Current.GetInstance(typeof(ILoggerFacade));
logger.Log("App.OnStartup() completed", Category.Info ,Priority.None);
ServiceLocator
호스트 프로젝트 Microsoft.Practices.ServiceLocation.dll 참조 및 매칭 using
문 있어야 : 여기 ServiceLocator 로거를 사용하여 해결하는 예이다.
관련 문제
- 1. 질문에 대한 프리즘 4
- 2. 프리즘 4 - 로컬 스코프 RegionManager
- 3. 프리즘 4 : ItemsControl에서 항목을 숨기는 방법?
- 4. Silverlight 용 log4net 버전이 있습니까?
- 5. 프리즘 - 프리즘 영역 관리자를 사용해야합니까?
- 6. Log4Net 용 어 캐서 팅 어 펜더?
- 7. Xcode 4 용 AVR?
- 8. 프리즘 기반의 Silverlight 응용 프로그램에서 모듈 간의 스타일 공유 4
- 9. 프리즘 ASP.NET
- 10. 프리즘 CompositeEvent는
- 11. 프리즘 새로운보기
- 12. Silverlight 용 XAP 파일 4
- 13. flex 4 tabbar 용 툴팁
- 14. API 4 용 Android OnDragListener?
- 15. iOS 4 용 PJSIP 구축
- 16. PHP 4 용 SOAP 클래스
- 17. log4net with .NET 4.0
- 18. Log4Net 및 .NET 4.0
- 19. log4Net 딜레마
- 20. log4net 날짜별로
- 21. log4net 초기화
- 22. Log4Net 성능
- 23. BizTalk Log4Net
- 24. 브라우저/창 끄기 프리즘 응용 프로그램 용 크롬
- 25. 프리즘 모듈 뷰는 어떻게 표시합니까?
- 26. Silverlight 액션 및 프리즘
- 27. 프리즘 : 예외 처리?
- 28. MEF와 프리즘 통합
- 29. 프리즘 scultpure 실버 라이트
- 30. StructureMap을 사용하여 프리즘 구성
감사합니다. – JohnC
고맙지 만, 왜 그것을 'Log4NetLogger'로 전송 했습니까? 로깅 솔루션이 변경되면 모든 로거 인스턴스를 다른 유형으로 다시 캐스팅하거나 캐스트 코드를 제거해야합니다. – Jalal
실제로 왜 캐스팅하셨습니까? 그것은 당신이 Log4NetLogger를 정의하는 어셈블리에 대한 참조를 필요로 함을 암시합니다. – Kris