로그 할 대상과 기록 할 위치를 제어하는 일부 조건부로 내 로거 클래스를 향상하려고합니다.조건부 메서드를 호출하는 조건부 메서드가 C#에서 작동하지 않습니다.
#define Logging
#define VerboseLogging
static void Main(string[] args)
{
Logger.Log("Logging", "");
Logger.VerboseLog("VerboseLogging", "");
}
는 "VerboseLogging을"없는 출력 만 "로깅", 산출 다음 프로그램을 실행, 그러나
public static class Logger
{
[Conditional("Logging"), Conditional("VerboseLogging")]
public static void Log(string msg, string filename)
{
// log to file
}
[Conditional("VerboseLogging")]
public static void VerboseLog(string msg, string filename)
{
Log(msg, filename); // just defer call to Log(string msg)
}
}
: 나는 로깅 기능 두 가지를 가지고있다.
응용 프로그램을 디버깅하면 VerboseLogging이 실제로 호출되지만 실제로는 Log(msg, filename)
이 호출되지 않습니다. 디버거는 함수 호출 바로 위에 점프하여 VerboseLog()
함수의 끝으로 건너 뜁니다.
Log(string msg)
메서드에서 조건을 제거하면 작동합니다.
누구에게 이런 일이 발생했는지 또는 무엇을해야하는지에 대한 단서가 있습니까?
나는 당신이 가지고있는 것과 똑같이 응용 프로그램을 만들었고 모든 것이 제대로 작동 했었습니다. 발생한 문제를 다시 만들 수 없습니다. –
바이너리가 제대로 다시 작성되지 않았습니까? 깨끗한 구조를 만들려고 했습니까? –
예, 이미 여러 번 시도했습니다. 물론 CSV를 읽고 파일에 로깅하는 등 내 응용 프로그램에 더 많은 것이 있습니다. VerbosLog (...)가 왜 호출되는지 이해할 수 없지만 VerboseLog()의 본문에서 Log() 호출을 건너 뜁니다. –