|
News,
Internal,
Projects,
Home Software, Support, Documentation |
On Fri, Dec 19, 2003 at 04:51:47PM +0900, 최재국 wrote:
> syslog(3)을 이용해서 로그를 남기고 있습니다..
>
> openlog("TEST", LOG_NDELAY, LOG_LOCAL1);
>
> for(i = 0; i < TEST_NUM; i++)
> syslog(LOG_ALERT, "%s\n", log); // log 는 char[1024]
>
> closelog();
>
> 이런 식으로 로그를 남기는 프로그램을 사용하는데요..
>
> 저 TEST_NUM 의 숫자가 커져서 한번 open 해서 쓰는 로그가 엄청나게 많을 경우
>
> syslogd 데몬이 계속 밀리는 것 같습니다.
>
syslog(3)는 realtime으로 동작하지는 않습니다.
syslogd(8)가 /dev/log에서 메세지를 읽는 시점의 시간이 기록되기 때문에 정확한
값은 아닐수 있고, 보통 정확도가 1초 미만입니다.
또한 syslog(8)가 많은 로그를 동시에 open하여 select(2)로 처리하기 때문에
더 더욱 정확한 값은 기대하기 어렵습니다.
> 같은 시간에 생성된 log 메시지가 커널 메시지에는 다른 시간대로 써지는 것 같습니다.
>
> 그럼 그 밀리는 로그는 어디에 임시로 저장되게 되는지 알고 싶습니다..
>
많은 로그정보가 필요하다면 syslogd(8)를 사용하지 말고 프로그램에서 직접
로깅을 하도록 하고 binary format으로 하는게 좋을것 같습니다. 이런식으로
처리를 하면 디스크의 I/O에만 영향을 받기때문에 원하는일을 할 수 있을겁니다.
물론 binary format으로 저장되었기 때문에 이를 읽어볼려면 이를 해독할 수
있는 다른 프로그램도 같이 만들어야 합니다.
예를들면 tcpdump(1)는 많은 로그를 필요로하기 때문에 직접로깅을 하고(-w option)
나중에 이를 다시 볼수있습니다.(-r option)
> 도움 부탁드립니다..
>
--
Pyun YongHyeon <http://www.kr.freebsd.org/~yongari>
_______________________________________________
한국 FreeBSD 사용자 그룹(KFUG) questions 메일링 리스트
questions at kr.FreeBSD.org
http://www.kr.FreeBSD.org/mailman/listinfo/questions
|
Copyright © 1998-2005 Korea FreeBSD Users Group. All rights reserved. webmaster at kr.FreeBSD.org $Date: 2003/12/20 02:21:20 $ |
|