대 내가 닷넷/C#을 멍청한 놈에게 (오랜 서블릿/자바 개발자) 내 MVC 응용 프로그램에 로깅을 추가 할 필요가MVC 로깅 : [LogRequest] OnActionExecuting
을 해요. 성능이 좋고 저렴하며 구성이 간단해야합니다.
내가 처음에 무엇을하고 싶은지는 각 들어오는 컨트롤러 동작을 기록하는 것입니다. 내가 모든 컨트롤러의 액션 메소드에 코드 라인을 추가 할 필요가 없기 때문에 단일 포인트 엔트리가있을 수도 있다는 생각이 들었다.
내가 볼때, 난 (제 경우 기지국 제어기)를 컨트롤러에 [LogRequest] 속성을 추가하고 logrequest 속성을 처리하기 위해
public class LogsRequestsAttribute : ActionFilterAttribute, IActionFilter
{
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
{ ... }
}
를 구현 할 수 있습니다.
또는
난 그냥 따라 기본 컨트롤러를 무시할 수 :
public class BaseController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
// perform some action here
}
}
및 BaseController에서 내 모든 컨트롤러를 상속합니다.
성능면에서 보면 더 빠를까요?
또한 성능면에서 한 번 실행되는 비 차단 스레드에서 실제 로깅 메서드 호출을 고려하고 있습니다. 이 접근법을 가진 함정들? 목표는 앱을 계속 진행시키고 로깅 메소드가 작업을 마칠 때까지 기다리지 않는 것입니다.
정보 주셔서 감사합니다. Log4net이 최적화되고 있다는 것에 대해 당신이 말하는 것을 이해합니다.하지만 차단합니까? 어쨌든 asynch를 실행하는 것이 좋습니다 로깅 필터는 무엇입니까? ... 또한 log4net/j 가지고있는 한 가지 문제는 db에 저장된 필드가있는 사용자 정의가 부족하다는 것입니다. 로그 레코드에 사용자 이름과 아마도 몇 가지 다른 것들을 추가하고 싶습니다. 나중에 메시지 필드에서 "좋아요"를해야하는 경우를 제외하고 쿼리를 추가하고 싶습니다. – horace
asynch 회전 비동기 로깅, '아무 것도 : http://www.singingeels.com/Articles/Logging_with_ASPNET_MVC_Action_Filters.aspx [/ link] – horace
나는 당신의 rec에 따라 이것을 구현했다. 그리고 그것은 매우 좋다. 필터를 추가하고 마술처럼 작동합니다! --- 나는 컨트롤러에 로깅을위한 마법 속성이 있는지 여부를 걱정할 필요가 없다는 사실을 좋아합니다. 단순한. 깨끗한. 공장. – horace