현재 WPF 응용 프로그램에서 메시지 로깅과 관련된 문제가 있습니다.정적 클래스 로깅에 대한 제안
내가
private SomeService service = new SomeService();
private void LogMessage(string message)
{
service.Log(message);
}
내 문제는 내가 기록을 필요로 내 화면에있는 기능을 포함하고 내 응용 프로그램을 통해 메시지를 로깅을위한 정적 클래스를 유지하고, 나는 화면에 다른 장소에서 문자열을 추가하고 통과 LogMessage 함수에 전달합니다. 나는 화면 내의 다른 장소에서 기록되는 매우 큰 데이터를 가지고있다.
public bool IsLoggingEnabled = false;
지금 나는 당신을이
if(ClassName.IsLoggingEnabled)
{
var msg = string.Format("Log 1 : {0}, Log 2 : {1}, Log 3 : {2} .... ", 0,1,2);
}
if(ClassName.IsLoggingEnabled)
{
msg += string.Format("Log 4 : {0}, Log 5 : {1}, Log 6 : {2} .... ", 4,5,6);
}
...............
ClassName.LogMessage(msg);
같은 문자열을 추가하기 전에이 조건 각 시간을 확인할 수있는 필요, 즉
가 지금 직면하고있는 문제는 새로운 멤버가 도입 된 것입니다 이 시나리오를 처리하기위한 솔루션을 제안하십시오. 모든 메시지를 추가하고 마지막으로 조건을 확인하는 것이 좋습니다. 또는 LogMessage 함수 내에서 조건을 확인 하시겠습니까?하지만 나는 이것을 잘못된 길로 느꼈습니다. 모든 제안을 부탁드립니다. 각 로그에 - 왜 그냥 별도의 로그를 작성하지 문자열 연결에 대해
private void LogMessage(string message)
{
if(ClassName.IsLoggingEnabled)
{
service.Log(message);
}
}
: 당신이 그것을 사용
'IsLoggingEnabled'가'LogMessage'와 같은 클래스에 정의되어 있다면'LogMessage' 메쏘드에'if'를 넣고 모든 호출 클래스들을 깨끗하게 유지하십시오 - 그들은 단지'LogMessage'를 호출 할 것입니다. – Enigmativity
당신은 바퀴를 다시 발명하고 있습니다. 로깅 프레임 워크는 로그 메시지를 발송할 수 있습니다. 예를 들어, 심각도 수준 및 로거 구성을 사용하여 로그에 기록할지 여부를 결정할 수 있습니다. 'IsLoggingEnabled'는 냄새가 난다. 또한 정적 로거는 좋은 해결책이 아닙니다. 한 로거에서 다른 로거로 이동하기로 결정할 때 (이것은 보통 시간 문제 일뿐입니다), 그렇게하기가 어려울 것입니다. – Dennis
@Enigmativity : 제안에 감사드립니다. 그러나 로깅이 필요하지 않은 경우에도 불필요하게이 함수를 호출하게됩니다. 어쨌든 그것이 가능한 방법 중 하나입니다. – ViVi