2013-09-06 2 views
0

우선 순위 수준과 다양한 양의 문자열을 응용 프로그램의 정보를 기록하는 인수로 사용하는 함수를 작성하려고합니다.syslog를 사용하여보고 정보

_logf(LOG_INFO, "Starting app version %s", "1.0"); 
:

int _logf(int priority, char *fmt, ...) 
{ 
    if (log.priority >= priority) { 
     syslog(priority, "LOG:%s", fmt); 
    } 
    /* stderr and syslog */ 
} 

log.priorityLOG_INFO/LOG_DEBUG/LOG_ERR

및 사용을 할 수있는 런타임에 int 설정은 다음과 같습니다

기능은 지금까지 다음과 같이 보입니다

로그 메시지를 syslog으로 보낼 수있는 적절한 방법입니까?

+0

변수'log'는 어디에 정의되어 있습니까? – lurker

답변

1

함수에 전달 될 수있는 매개 변수의 가변 개수가 포함되어 있지 않기 때문에이 방법은 작동하지 않습니다. 이 작업을 수행하는 방법에

당신이이 vsyslog() 사용하여 다음 예를 살펴 걸릴 수 있습니다 : 다음

#include <syslog.h> 
#include <stdarg.h> 

... 

int _logf(int priority, const char * fmt, ...) 
{ 
    if (log.priority >= priority) 
    { 
    va_list ap; 

    va_start(ap, fmt); 

    vsyslog(priority, fmt, ap); 

    va_end(ap); 
    } 
} 

을과 같이 예를 들어 호출 :

_logf(LOG_INFO, "LOG %s:%d (%s) - %s", __FILE__, __LINE__, __func__, "Just some info."); 

업데이트 :

추가로 0으로 로그하려면ath 기능 vfprintf()을보고 싶을 수도 있습니다.

+0

정말 감사합니다! – TomSelleck

관련 문제