Sofia-SIP 소스 - su 모듈 - su 읽기default_log.c/su_global_log.c
4
su_log_t su_log_default[1] = {{
sizeof(su_log_t),
"sofia", /* Log name */
"SOFIA_DEBUG", /* Environment variable controlling logging level */
SOFIA_DEBUG_, /* Default level */
SU_LOG_MAX, /* Maximum log level */
0,
default_logger,
NULL
}};
상기 코드에서 보듯이sulog_default의 이름은 "sofia"이며, 사용 가능한 로그 레벨 환경 변수는 SOFIADEBUG, 기본 로그 레벨은 SOFIADEBUG_매크로 결정.더 중요한 것은 로그 출력 함수가default 로 확정되었다는 것이다logger.안타깝게도 여기는 지정stream을 보지 못했다.4
static void default_logger(void *stream, char const *fmt, va_list ap)
{
FILE *f = stream ? (FILE *)stream : stderr;
vfprintf(f, fmt, ap);
}
로그 출력 함수 정의에서 알 수 있듯이 stderr를 출력 흐름으로 사용하지 않습니다.su_global_log.c 파일의 주요 컨텐트는 다음과 같습니다.
4
extern char const SU_DEBUG[];
#endif
#ifdef SU_DEBUG
#define SU_DEBUG_ SU_DEBUG
#else
#define SU_DEBUG_ 3
#endif
/**Debug log for @b su module.
*
* The su_log_global is the log object used by @b su module. The level of
* #su_log_global is set using #SU_DEBUG environment variable.
*/
su_log_t su_log_global[1] = {{
sizeof(su_log_t),
"su",
"SU_DEBUG",
SU_DEBUG_,
SU_LOG_MAX,
0,
NULL,
NULL
}};
위 코드와 같이sulog_글로벌의 목적은 로그 출력을 절약하는 것입니다. 비록 이 출력은 아무런 작용이 없지만, 실제 출력 함수가 없기 때문입니다.이로써 슈가 제공하는 기초 로그 서비스 중sulog_default 및 sulog_글로벌 두 변수가 언제 상세하게 초기화됩니까?또한 c라이브러리가 상부 응용에 기초 서비스를 제공할 때 어떤 디자인 전략을 취해야 하는지 이해했다.간단하게 요약하면 다음과 같습니다.
1、su_log 파일은 로그 기초 구성 요소 제공하기;
2、su_debug.h 파일은 각 모듈 자체가 로그 서비스를 사용하는 데 필요한 SU 를 제공합니다DEBUG_0 - SUDEBUG_9 매크로
3、su_module_debug 파일은su모듈 자체가 기초 로그 서비스를 사용하는 데 필요한 매크로를 제공합니다.
4、su_default_log 및 suglobal_log 파일 초기화sulog_default 및 sulog_글로벌 변수;
5、기타 모듈은 로그 기초 서비스를 사용하고, 반드시 먼저 자신의su 를 사용해야 한다log_t 구조체 변수 재정의 SULOG, 그리고 sudebug.h 헤더 파일.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Grandstream의 ATA와 SIP 레지스트와 음성 워프를 조합해 전화 번호도 전화기도 바꾸지 않고 Twilio를 도입한다Twilio 편리합니다. - 지금 전화번호 그대로 사용할 수 없어? 같은 이야기. 그런 어느 날, 이런 기사를 찾아 버렸습니다. 오, 집 전화기를 IP 전화로 바꾸는 장치는 뭐든지 있다니 굉장하다. 그리고 또 어느 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.