필자는 log4net 및 log4j의 "format" API 로깅 메시지를 매우 좋아합니다. 따라서 필요한 로그 수준이 설정되지 않은 경우 인수에 ToString()을 호출하는 비용을 피할 수 있습니다.구축하는데 비용이 많이 드는 args와 함께 DebugFormat()을 사용하는 기술이 있습니까?
하지만 사용하는 인수 중 하나 이상이 단순한 개체가 아니라 어떤 방식으로 구성해야하는 경우가 있습니다. 예를 들어, 다음과 같이 : DebugFormat 그것의 있으며, toString 위해하는 것처럼 (해야한다고 결정하지 않는
logger.DebugFormat("Item {0} not found in {1}",
itemID,
string.Join(",", items.Select(i => <you get the idea>))
);
가 실행되지 않도록 (식에 참여) 두 번째 인수를 캡슐화하는 기술이 있는가 첫 번째 인수)?
람다 또는 func 같은 느낌이 들거나 뭔가 도움이 될 것 같지만 C#을 처음 접했을 때 손가락질을 할 수 없었습니다.
그것은이 가능처럼 보이지 않는 - 나는 당신이 그것은처럼 보이는 'Func을','Expression' 등을 할 수있는 오버로드를 찾을 수 없습니다 이 시나리오에서는'if (logger.IsDebugEnabled)'를 사용하여 포장하는 다소 조잡한 접근법 만이 실제 옵션 일 수 있습니다. –
log4net 또는 사용자 정의 솔루션에 내장 된 것을 의미합니까? – Evk
델리게이트를 취하는'DebugFormat'에 대한 래퍼를 작성하는 것은 매우 간단합니다. – DavidG