2010-05-29 5 views
3

로깅에 적용 할 수있는 디자인 패턴은 무엇입니까? 이런 유형의 상황에서 일반적으로 사용되는 것은 무엇입니까? 좋은 튜토리얼?화면 및 파일에 로깅

저는 C89 및 gcc 4.4.4를 사용하여 클라이언트 - 서버 응용 프로그램을 작성하고 있습니다. 이제 로그 메시지를 화면에 표시하고 파일에 기록하는 일부 로깅 기능을 구현해야합니다.

그러나 모든 로그 메시지 (경고, 오류, 중요, 복구 할 수 없음, 디버그 등)를 표시하고 싶지 않습니다. 어쩌면 나는 단지 오류 만 표시하고 다른 것은 표시하지 않도록 설정할 수 있습니다. 예를 들어, 사용자가 화면 출력의 디버그 메시지에 관심이 없을 수 있습니다.

답변

4

힌트/개념 :

  1. 메커니즘은 로그 레벨 파라미터 또는 기능 명에 의해 묵시적으로 로그 엔트리를 생성한다.
  2. 보통 printf 스타일 형식 문자열 다음에 매개 변수가옵니다.
  3. 메시지를 생성하는 하나 이상의 스레드에서 메시지를 수집하는 데이터 구조.
  4. 일부 형식의 타임 스탬프입니다.
  5. 수집 된 메시지를 처리하고 출력 생성을 수행하는 백엔드 스레드입니다. 파일에 표시 및/또는 기록되는 레벨을 구성 할 수 있습니다.
  6. vsnprintf()는 가변 개수의 매개 변수를 사용하는 함수로 백엔드 처리 섹션에서 자주 사용됩니다.

종종 로그를 생성하는 실제 작업 스레드가 문자열 조작으로 시간을 낭비하지 않도록 문자열 처리를 백그라운드 스레드로 연기하는 것이 좋습니다. 그러나 가변 문자열을 인쇄하는 것은 배경이 처리 할 때까지 범위를 벗어나는 경향이 있기 때문에 인쇄하기가 어렵습니다. 따라서 이러한 경우 숫자 값을 사용하는 것이 좋습니다. 실시간으로 그리 큰 문제가 아니라면 포인터와 숫자 매개 변수 값을 전달하는 대신 문자열을 로그 인터페이스를 통해 복사 할 수 있습니다.

행운을 빈다.