2021年6月12日 星期六

busybox syslogd

syslogd [選項]

選項

  • -n:前景執行。
  • -O FILE:日誌檔,預設 /var/log/messages。本地紀錄時,未符合規則、等級小於選項 -l、且不紀錄到 share memory 時使用。
  • -l N:只紀錄小於等級 N (1-8) 的訊息。
  • -S:較小的輸出,不放主機名稱和分類等級。
  • -m MIN:MIN 週期丟 SIGALRM 給自己,在日誌加「-- MARK --」。程式未啟用。參考 alarm()。

功能 ROTATE_LOGFILE

  • -s SIZE:rotation 大小 (KB),預設 200KB,0 不 rotation。
  • -b N:保留 N rotated logs,預設 1,最大 99,0 不保留。

功能 REMOTE_LOG

  • -R HOST[:PORT]:紀錄到遠端 IP 或主機的 PORT,預設 PORT 是 514/UDP。如果本地也要紀錄,選項要開 -L。
  • -L:紀錄到遠端時,同時也紀錄到本地。

功能 SYSLOGD_DUP

  • -D:丟棄重複的訊息。

功能 IPC_SYSLOG

  • -C[size_kb]:未符合規則且等級小於選項 -l 的,紀錄到在 share memory 的 circular buffer,使用 logread 讀取。參考 shmget()、shmat()、shmdt()、shmctl()、semget()、semop()、semctl()。

功能 SYSLOGD_CFG

  • -f FILE:指定設定檔,預設 /etc/syslog.conf。符合規則的就不會再紀錄到指定的日誌檔或 IPC share memory。

範例

  • syslogd -R masterlog:514
  • syslogd -R 192.168.1.1:601

syslogd 動作

  1. 讀取 /dev/log 訊息。
  2. 檢查有沒有重複。
  3. 紀錄到遠端話,送到遠端。沒開 -L 選項則回到 1.。
  4. 預設分類等級是 user.notice,嘗試解析訊息中 <數字>。
  5. 換行替代為空白,TAB 不變,其它 0x1F 以下的碼替代為 ^A、^B、...。
  6. 使用訊息中已有的 timestamp 或產生 timestamp。
  7. 沒設 -S 選項加上主機名稱和分類等級。
  8. 設定檔有符合的分類等級規則,本地紀錄完回到 1.。
  9. 符合紀錄等級以下,紀錄到 share memory,否則本地紀錄到選項 -O 的日誌檔。

本地紀錄的動作

  1. 如果不在同一秒,重新開啟檔案。
  2. 嘗試開啟檔案,失敗改開啟 /dev/console,再不行則用 stderr。
  3. 一般檔案進行 rotate 動作。
  4. 寫入。

參考

  1. busybox sysklogd 原始碼
  2. facilitynames[] 和 prioritynames[] 在 uClibc 的 include/sys/syslog.h

沒有留言:

張貼留言

SIP header Via

所有 SIP 訊息 都要有 Via,縮寫 v。一開始的 UAC 和後續途經的每個 proxy 都會疊加一個 Via 放傳送的位址,依序作為回應的路徑。 格式 sent-protocol sent-by [ ;branch= branch ][ ; 參數 ...] s...