[요청] 리눅스/유닉스 로그 시스템

nTachyon의 이미지

제목처럼 조언 요청드립니다.

보통은 프로그램 시에 파일에 로그 남기는 코드를 vararg 파라메트를 이용해 직접 작성하는데...

리눅스/유닉스에서 기본적으로 제공되는 로그 시스템이 있나요?

자바쪽의 JBOSS를 보다 보니, 그쪽에 로그 시스템이 있는 듯 해... 이런 것도 정형화되어 있다면... 그리고 그런게 혹 리눅스/유닉스 쪽에 있다면 하는 마음에 글 올려봅니다.

검색으로는 Linux-Log 라는 프로젝트가 중단된 상태더군요.

혹 님들은 어떤 로그 시스템을 사용하시는지요?

좋은 하루 되세요

정태영의 이미지

man 3 syslog

syslog 로 로그를 넘겨주면 안되나요?

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

nTachyon의 이미지

특정 프로그램의 로그를 남기려다 보니...

로그를 syslog 밑이 아니라, 제가 지정한 특정 경로에 log를 남기고자 하는데...

syslog.conf 를 건드려서

Quote:

shawn.* /home/shawn/syslog.log

이렇게 추가했지만,

openlog(argv[0], LOG_PID, 5);
syslog(?????, "어쩌고저쩌고...");
closelog();

이런 식의 코드로는 컴파일이 힘들더군요. 위 코드의 "?????" 를 어떻게 처리할지 몰라서-_-;

결론은 좀 더 간편한(게으름의 소치 -_-;) 다른 로그 시스템이 없나 찾아보던 중이었답니다.

원 질문의 본질이 바뀌는 것은 아닐 듯 하니...

혹 syslog에 대한 자세한 설명 부탁 드립니다

좋은 하루 되세요~~~

progcom의 이미지

nTachyon wrote:
결론은 좀 더 간편한(게으름의 소치 -_-;) 다른 로그 시스템이 없나 찾아보던 중이었답니다.

syslog 시스템을 이해하시면 그만큼 간편한 로그 시스템도 없을텐데요.

nTachyon wrote:
syslog.conf 를 건드려서
Quote:

shawn.* /home/shawn/syslog.log

이렇게 추가했지만,

위와같이 추가했다면 로그를 열때는
openlog("shawn", LOG_PID, LOG_USER)
정도로 열면 되겠지요.

syslog(?????, "어쩌고저쩌고...");

??? 부분에 들어가는건 로그 등급입니다. LOG_ALERT, LOG_DEBUG 등... man 페이지에 잘 나와있으니 참고하세요.

nTachyon의 이미지

어제밤에 이것저것 테스트하면서 어느정도 로그 시스템에 대해 파악이 된 것 같습니다.

하지만, 몇가지 의문에 대해 한번 더 확인하고 싶네요...

1) syslog 같은 경우엔 strace로 동작을 보니 udp로 데이터를 syslogd 에게 쏘는 것 같던데... 혹시나 데이터 유실이 있을 까 싶어 많은 건수의 데이터를 loop 돌면서(동일한 메시지는 아니고, 조금씩 내용을 바꾸면서) 남겼더니... 건수가 많아질 수록 log file에서 유실된게 보이네요...
udp로 쏜 건수보다 log에 남은 내용이 적어지네요... 얼만큼 많이 쏘았느냐에 정비례해서...

이런 데이터 유실은 어쩔 수 없는 것인가요? udp를 사용한다는 걸 보면 수긍은 가는데, 이렇게 데이터 유실이 있다면 log 로서의 의미가 반감되지 않는가 싶기도 하고, 다른 방도는 없을까 싶기도 하네요.

개인적으로 직접 "파일열고->write하고->파일닫고" 하는 코드를 작성한 것 보다 데이터 유실이 더 많은 듯 싶습니다.(건수가 많아질 시...)

2) log level에 따라 남길 파일을 다음과 같이 설정했습니다.

Quote:

*.DEBUG /home/shawn/main.log
*.ERR /home/shawn/main_error.log

이 때 로그가 남는 것을 보면...

LOG_DEBUG로 남긴 로그는 main.log 에 남고,
LOG_ERR로 쏜 내용은 main.log와 main_error.log 두 곳 모두에 남습니다.

이는 위처럼 level에 따라 다른 파일을 정해놨을 경우에 level 상수가 높은 로그는 level이 낮은 로그파일에도 함께 남는다는 의미로 봐야하는건지요?

제대로 정리가 됐는지 모르겠습니다.

비가 올 듯 하네요. 좋은 하루 되소서~

progcom의 이미지

첫번째는 잘 모르겠네요. 일반적으로 사용할때 무리가 없었거든요. (그러고보니 동작을 자세히 확인해본 적은 없네요. 로그를 남길때 있으니 쓴다... 정도로도 문제 없는 수준만 해서 그런지...)

nTachyon wrote:

2) log level에 따라 남길 파일을 다음과 같이 설정했습니다.
Quote:

*.DEBUG /home/shawn/main.log
*.ERR /home/shawn/main_error.log

이 때 로그가 남는 것을 보면...

LOG_DEBUG로 남긴 로그는 main.log 에 남고,
LOG_ERR로 쏜 내용은 main.log와 main_error.log 두 곳 모두에 남습니다.

이는 위처럼 level에 따라 다른 파일을 정해놨을 경우에 level 상수가 높은 로그는 level이 낮은 로그파일에도 함께 남는다는 의미로 봐야하는건지요?

제대로 정리가 됐는지 모르겠습니다.
비가 올 듯 하네요. 좋은 하루 되소서~

로그 레벨에 따라서 정확히 기록하려면

*.=DEBUG    /home/shawn/main.log
*.=ERR         /home/shawn/main_error.log

처럼 써주시면 됩니다. 기본으로는 '>='으로 작동하기 때문에 상위 레벨의 로그는 하위레벨의 로그파일에도 남습니다.
nTachyon의 이미지

그렇군요... 여기서

Quote:
*.=ERR
같은 문법이 있을줄은... -_-;

어찌됐든 제가 해야할 수고를 program 님이 대신 해주신 것 같아...

수고하셨슴다!

M.W.Park의 이미지

http://logging.apache.org/

log4j의 각종 port들인 것같군요. 8)
한번 둘러보시는 것도 좋을 듯합니다.

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

nTachyon의 이미지

log4j... 기억속에 아련하던 것을 끄집어 내어주셔서 감사합니다.

첫 글에서 찾던 로그 시스템이 log4j가 생각 안나서 그런게 있었는데... 하고 올린 질문이었거든요.

감사합니다 ^^

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.