NLog를 통해 로깅을 구현하려고하는데 실제로주의를 요구하는 코드 냄새가 있지만 현재 제한된 지식으로 인해이를 처리하는 방법을 잘 모릅니다. 여기 솔리드 주체를 위반하지 않고 올바르게 로깅을 구현하는 방법은 무엇입니까?
내가 DI와 함께 사용할 수있는 인터페이스 뒤에 NLog의 실제 구현을 숨긴 그 클래스는 싱글 톤의 내가먼저 좋아하지 않는 것들이다.
현재 가능한 한 많은 정보를 기록하려고합니다. 즉, 비즈니스 개체의 거의 모든 메소드에서 로거를 호출하고 있으며 로깅 클래스에서 작성중인 종속성이 마음에 들지 않습니다. 메소드를 직접 호출하는 것이 아니라 모든 메소드에서 로깅을 수행하는 더 나은 방법입니까? 여기에서는 로깅 인터페이스 방법을 변경하면 Open Closed Principal을 위반하고 있다고 생각합니다. 모든 지옥은 헐렁 할 것이고 그 변화는 모든 방법에서 거의 파급 될 것입니다.
두 번째로 무서운 부분은 UserID, ProductCode 등 일부 경우에 내 로거에 추가 정보를 전달해야한다는 것입니다.이 정보를 로거 클래스에 매개 변수로 전달하면 생각조차하지 않습니다. 그 길을 ... 경험이 많은 사람들은 어떻게 이런 시나리오를 다루겠습니까?
의견을 보내주세요.
감사합니다. 당신의 대답 리드가 올바른 방향으로 인도합니다. 제 경우에는 포스트 샤프 (Post Sharp)를 사용했고 지금 크로스 커팅 (Cross Cutting) 관심사로 작업한다는 내 관점이 완전히 달라졌습니다! 고마워! –
예, 교차 절단은 완전히 새로운 사고 방식입니다. 재미있게 보내십시오. – SilentNot