2013-07-11 5 views
0

다른 프로그램에서 호출 된 MFC C++ 라이브러리가 있습니다. 본질적으로 제 라이브러리는 OPOS 장치의 단순한 클래스입니다. OPOS 클래스에는 정적 로거를 호출하는 다른 많은 클래스가 있습니다. 로거는 파일 또는 콘솔로 출력합니다 (레지스트리 설정에 따라 다름) 다른 날 누군가가 클래스 2 인스턴스를 만들고 log1.log에 인스턴스 1의 로깅을 설정하고 log2.log에 인스턴스 2를 설정합니다.정적 로거로 다른 로그 위치를 설정하는 방법

내 로깅은 인스턴스 1의 정적 인 부분이므로 log1에 로깅됩니다. 인스턴스 2가 만들어지면 인스턴스 1과 인스턴스 2가 모두 log2에 기록됩니다. 그 문제를 해결할 수 있는지 묻는 질문을 받았습니다. 나는 그것에 관해 thiking에 도착했다. 그리고 나는 내가 그것을 할 것 인 방법을 이해할 수 없다. 저는 C++을 약 1 년 동안하고 있었기 때문에 저는 그것에 익숙한 슈퍼 배우가 아니며 단지 해결책을 생각할 수 없습니다. 어떤 팁?

시도해 본 것에 대해 조금 설명 드리지만 CurrentThread, CurrentProcess, 수신 DispatchID를 확인했으며 항상 동일합니다. 다른 제안?

로깅을 정적에서 비 정적으로 변경해야한다면 작업량이 많을 것이라는 생각이 맘에 들지 않지만 필자는 그렇게 할 수있는 유일한 방법이라고 생각합니다.

+0

"big ol class"나는 디자인에 실패했습니다. –

+0

@JohnDibling 아니, 그건 나만 :) OPOS 서비스 개체를 만들려면 기본적으로 적절한 인터페이스를 확장해야합니다. 제 경우에는 MSR입니다. OPOS 인터페이스는 일반적으로 (내 의견으로는) 커다. 어쩌면 2 또는 3 방법을 가지고 내 인터페이스에 비해. 내 MSR 장치에는 많은 기능이 있으므로 다른 기능을 더 작은 클래스로 나눕니다. 조명, 경고음, 속성 등. –

+0

글쎄, 냄새가 나는 이웃 사람의 점심일지도 몰라. 나는 OPOS 또는 MSR이 의미하는 것을 모른다. 그래서 연기 할 것이다. –

답변

1

정적 로깅 클래스 내에서 로그 파일/콘솔 핸들을 유지 관리하고 있다고 생각하면 로깅을 비 정적으로 설정하거나 로그 열기가 호출 루틴이 로그에 전달하는 핸들을 반환하도록해야합니다 쓰기 방법.

+0

나는이 핸들 방식에 익숙하지 않다. (나는 핸들이 무엇인지 알고있다.) 나는 당신의 대답을 표시하기 전에 내가하려고하는 것이 무엇을 의미하는지에 대한 간단한 설명을 올리시겠습니까? 그러므로 좋은 아이디어 인 것 같습니다. +1 –

+1

당신이 무엇을 찾고 있는지 잘 모르겠습니다. 이것은 제가 할 일에 대한 간단한 요약입니다 : Open :'FILE * fLog = _tfsopen (sFileName, _T ("a + tc"), _SH_DENYWR); return fLog;' 쓰기 :'_fputts (sLogContents, fLog); ' –

+0

고맙습니다. 나는 그것을 줄 것이고 무슨 일이 일어날지를 볼 것이다. –

관련 문제