동일한 응용 프로그램의 두 인스턴스에서 로그 파일에 안전하게 쓰는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1300629

  •  18-09-2019
  •  | 
  •  

문제

매번 1 개의 인스턴스 만 실행할 수있는 응용 프로그램이 있지만 두 번째 인스턴스가 시작되면 첫 번째로 사용될 수있는 공통 로그 파일에 로그인해야합니다.

실행중인 인스턴스 수를 확인하고 처음에 이벤트 로거에 단순히 로그인 할 계획 이었지만 응용 프로그램은 사용자 또는 시스템 컨텍스트에서 실행 중일 수 있으며 EventLog 소스를 사용자로 쿼리하려고 시도 할 때 예외가 발생합니다. 보안 로그가 사용자가 접근 할 수 없으므로 아이디어가 폐기됩니다.

그래서 동일한 응용 프로그램의 2 개의 별도의 인스턴스가 로그 파일에 쓰는 가장 안전한 방법이 무엇인지 알아 내고 싶었습니다.

피할 수없는 경우 기존 추가 프레임 워크를 사용하지 않기를 원합니다.

모든 도움이 감사합니다.

도움이 되었습니까?

해결책

뮤텍스 로그 파일과 같은 공유 리소스의 Interprocess 동기화에 사용될 수 있습니다. 여기에 있습니다 견본.

다른 팁

항상 시스템 이벤트 로그에 쓸 수 있습니다. 잠금 장치 나 필요한 것은 없으며 이벤트 뷰어는 일부 사람들에게 신용을주는 것보다 더 강력합니다.

귀하의 의견에 대한 응답으로 다른 사용자는 여기에서 이벤트 로그에 대한 쓰기 권한에 대한 질문을했습니다. 답은이를 수행하는 방법을 설명하는 MSDN 기사와 연결되어 있습니다.

그 질문을 참조하십시오 여기.

원하는 경우 문제를 피할 수 있습니다 ...

이것이 Windows 앱 인 경우 첫 번째 인스턴스를 메시지를 보내고 그만 둘 수 있습니다. 메시지를 받으면 원래 인스턴스가 문제없이 로그 파일에 쓸 수 있습니다.

사용하지 않는 이유 syslog 규약 ? 이를 통해 표준 기반과 유연한 방식으로 로그를 전달할 수 있습니다. 프로토콜 자체는 매우 간단하지만 그물에는 많은 예가 있습니다. 여기. 앱이 엔터프라이즈 사용이 예정인 경우 표준 로깅 방법을 갖는 것이 큰 장점이 될 수 있습니다. (그리고 파일을 유지할 필요가 없습니다 - 그것은 바로 그 일을하는 전문 소프트웨어의 작업이됩니다).

해킹하는 한 가지 방법은 로그 파일을 메모리 매핑하는 것입니다. 이렇게하면 응용 프로그램의 두 인스턴스가 파일의 동일한 가상 메모리 이미지를 공유합니다. 그런 다음 파일 내부에서 뮤텍스를 구현하는 여러 가지 방법이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top