syslog簡介 系統日誌寫入API

2021-08-11 08:08:30 字數 3121 閱讀 4987

一、簡介

syslog是linux系統預設的日誌守護程序。預設的主配置檔案和輔助配置檔案分別是/etc/syslog.conf和/etc/sysconfig/syslog檔案。通常,syslog 接受來自系統的各種功能的資訊,每個資訊都包括重要級。/etc/syslog.conf 檔案通知 syslogd 如何根據裝置和資訊重要級別來報告資訊。

二、配置檔案

/etc/syslog.conf 檔案按照以下格式進行配置

facility.level    action

說明 :facility.level為選擇條件,本身分為兩個字段,之間用乙個小數點(.)分隔。action和facility.level之間使用tab隔開。
facility 訊息型別,指定 syslog 功能,主要包括:

kern     核心資訊,首先通過 klogd 傳遞;

user 使用者程序;

mail 郵件;

daemon 後台程序;

authpriv 授權資訊;

syslog 系統日誌;

lpr 列印資訊;

news 新聞組資訊;

uucp 由uucp生成的資訊

cron 計畫和任務資訊。

mark syslog 內部功能用於生成時間戳

local0----local7 與自定義程式使用,例如使用 local5 做為 ssh 功能

*        萬用字元代表除了 mark 以外的所有功能
level 訊息級別,指定syslog優先順序,主要包括:

emerg 或 panic   該系統不可用(最緊急訊息)

alert 需要立即被修改的條件(緊急訊息)

crit 阻止某些工具或子系統功能實現的錯誤條件(重要訊息)

err 阻止工具或某些子系統部分功能實現的錯誤條件(出錯訊息)

warning 預警資訊(警告訊息)

notice 具有重要性的普通條件(普通但重要的訊息)

info 提供資訊的訊息(通知性訊息)

debug 不包含函式條件或問題的其他資訊(除錯級-資訊量最多)

none 沒有重要級,通常用於排錯(不記錄任何日誌訊息)

* 所有級別,除了none

action 動作域,主要包括:

操作動作

日誌資訊可以分別記錄到多個檔案裡,還可以傳送到命名管道、其他程式甚至另一台機器。包括三類:

file                    指定檔案的絕對路徑

terminal 或 prin        完全的序列或並行裝置標誌符

@host(@ip位址)    遠端的日誌伺服器

/var/log/lastlog : 記錄每個使用者最近簽入系統的時間
/var/run/utmp : 記錄每個使用者簽入系統的時間, who, users, finger 等指令會查這個檔案.

/var/log/wtmp : 記錄每個使用者簽入及簽出的時間, last 這個指令會查這個檔案. 這個檔案也記錄 shutdown 及 reboot 的動作.

/var/log/secure : 登入系統的資訊

/var/log/maillog : 記錄 sendmail 及 pop 等相關訊息.

/var/log/cron : 記錄 crontab 的相關訊息 ,定時器的資訊

/var/log/dmesg : /bin/dmesg 會將這個檔案顯示出來, 它是開機時的畫面訊息.

/var/log/xferlog : 記錄那些位址來 ftp 拿取那些檔案.

/var/log/messages : 系統大部份的訊息皆記錄在此, 包括 login, check password , failed login, ftp, su 等.

syslog apis

linux c中提供一套系統日記寫入介面,包括三個函式:openlog,syslog和closelog。呼叫openlog是可選擇的。如果不呼叫openlog,則在第一次呼叫syslog時,自動呼叫openlog。呼叫closelog也是可選擇的,它只是關閉被用於與syslog守護程序通訊的描述符。

其中openlog和closelog都是可選的。不過,通過呼叫openlog,我們可以指定ident引數。這樣,ident將被加到每條日記記錄中。ident一般設成程式的名字,如在下面例子中的"testsyslog":

#include int main(int argc, char *argv)   

編譯生成可執行檔案後,每執行一次,程式將往/var/log/messages新增一條如下的記錄:

apr 23 17:15:15 lirong-920181 testsyslog[27214]: syslog test message generated in program ./a.out  

格式基本是:timestamp hostname ident[pid]:log message。其中ident就是我們呼叫openlog是指定的"testsyslog",而之所以會列印出[27214]是openlog的option引數中指定了log_pid。

一般來說,我們希望能夠為自己的應用程式指定特定的日記檔案。這時候,我們就需要修改syslog.conf檔案。假設我們現在要把除錯(debug)日記記錄寫到檔案/var/log/debug檔案中。第一步要做的是,在syslog.conf檔案新增如下訊息規則作為第一條規則:

user.debug                  /var/log/debug
要是新增的新規則生效,第二步我們需要重啟syslogd和klogd:service syslog restart(ubuntu下為/etc/init.d/rsyslog restart)

為了測試新規則是否生效,我們可以將testsyslog修改如下:

#include int main(int argc, char *argv)   

syslog簡介 系統日誌寫入API

一 簡介 syslog是linux系統預設的日誌守護程序。預設的主配置檔案和輔助配置檔案分別是 etc syslog.conf和 etc sysconfig syslog檔案。通常,syslog 接受來自系統的各種功能的資訊,每個資訊都包括重要級。etc syslog.conf 檔案通知 syslo...

linux系統日誌syslog 簡介

linux上的日誌系統由下邊的服務管理。syslog syslog ng 開源 syslog服務 由兩個程序共同管理 syslogd 系統,非核心產生的資訊 klogd 核心,專門負責記錄核心產生的日誌資訊 kernel 物理終端 dev console var log dmesg 核心初始化,執行...

日誌 syslog系統日誌

原創 2017年02月17日 20 47 05 前言 本文列出了在linux系統下的幾個日誌檔案。以及結合message中的日誌記錄,作出了簡單分析。syslog是linux系統預設的日誌守護程序。預設的syslog配置檔案是 etc sysctl.conf檔案 通常,syslog 接受來自系統的各...