成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linux日志管理高級進階:實例詳解syslog

原創
運維 系統運維
syslog已被許多日志函數采納,它用在許多保護措施中,任何程序都可以通過syslog記錄事件。syslog可以記錄系統事件,可以寫到一個文件或設備中,或給用戶發送一個信息。它能記錄本地事件或通過網絡記錄另一個主機上的事件。本文將從配置文件講起,用實例詳細介紹syslog。

 【51CTO獨家特稿】 syslog已被許多日志函數采納,它用在許多保護措施中,任何程序都可以通過syslog記錄事件。syslog可以記錄系統事件,可以寫到一個文件或設備中,或給用戶發送一個信息。它能記錄本地事件或通過網絡記錄另一個主機上的事件。

1、syslog簡介

syslog是一種工業標準的協議,可用來記錄設備的日志。在UNIX系統,路由器、交換機等網絡設備中,系統日志(System Log)記錄系統中任何時間發生的大小事件。管理者可以通過查看系統記錄,隨時掌握系統狀況。UNIX的系統日志是通過syslogd這個進程記錄系統有關事件記錄,也可以記錄應用程序運作事件。通過適當的配置,我們還可以實現運行syslog協議的機器間通信,通過分析這些網絡行為日志,藉以追蹤掌握與設備和網絡有關的狀況。

2、syslog配置文件

syslog設備依據兩個重要的文件:/etc/syslogd守護進程和/etc/syslog.conf配置文件。通常情況下,多數syslog信息被寫到/var/adm或/var/log目錄下的信息文件中(messages.*)。一個典型的syslog記錄包括生成程序的名字和一個文本信息。它還包括一個設備和一個優先級范圍。

通過使用syslog.conf文件,可以對生成的日志的位置及其相關信息進行靈活的配置。該配置文件指明了syslogd守護程序記錄日志的行為,該程序在啟動時查詢配置文件。該文件由不同程序或消息分類的單個條目組成,每個占一行。對每類消息提供一個選擇域和一個動作域。這些域由tab隔開:

  •  選擇域指明消息的類型和優先級;
  •  動作域指明syslogd接收到一個與選擇標準相匹配的消息時所執行的動作。

syslog.conf行的基本語法是:

消息類型.優先級 動作域

其中,每個選擇域是由消息類型和優先級組成。當指明一個優先級時,syslogd將記錄一個擁有相同或更高優先級的消息。Linux中一些主要的消息類型如表2所示,表3列出了一些優先級信息:

表2 syslog消息類型

消息類型 消息來源
kern 內核
User 用戶程序
Damon 系統守護進程
Mail 電子郵件系統
Auth 與安全權限相關的命令
Lpr 打印機
News 新聞組信息
Uucp Uucp程序
Cron 記錄當前登錄的每個用戶信息
wtmp 一個用戶每次登錄進入和退出時間的***記錄
Authpriv 授權信息

表3 syslog常用優先級

優先級 描述
emerg ***的緊急程度狀態
alert 緊急狀態
Cirt 重要信息
warning 警告
err 臨界狀態
notice 出現不尋常的事情
info 一般性消息
Debug 調試級信息
None 不記錄任何日志信息

不同的服務類型有不同的優先級,數值較大的優先級涵蓋數值較小的優先級。如果某個選擇條件只給出了一個優先級而沒有使用任何優先級限定符,對應于這個優先級的消息以及所有更緊急的消息類型都將包括在內。比如說,如果某個選擇條件里的優先級是“warning”,它實際上將把“warning”、“err”、“crit”、“alert“和“emerg”都包括在內。

syslog允許人們使用三種限定符對優先級進行修飾:星號(*)、等號(=)和嘆號(!):

  •  星號(*)的含義是把本項服務生成的所有日志消息都發送到操作動作指定的地點。就像它在規則表達式里的作用一樣,星號代表“任何東西”。在前面給出的例子里,“mail.*”將把所有優先級的消息都發送到操作動作指定的/var/log/mail文件里。使用“*”限定符與使用“debug”優先級的效果完全一樣,后者也將把所有類型的消息發送到指定地點。
  •  等號(=)的含義是只把本項服務生成的本優先級的日志消息都發送到操作動作指定的地點。比如說,可以用“=”限定符只發送調試消息而不發送其他更緊急的消息(這將為應用程序減輕很多負擔)。當你只需要發送特定優先級別的消息時,就要使用等號限定符。
  • 嘆號(!)的含義是把本項服務生成的所有日志消息都發送到操作動作指定的地點,但本優先級的消息不包括在內。

所以,根據上面介紹的相關知識,我們給出如下例子作為示范:

(1)如果指明\"crit\",那所有標為crit、alert和emerg的消息將被記錄。每行的行動域指明當選擇域選擇了一個給定消息后應該把他發送到哪兒。例如,如果想把所有郵件消息記錄到一個文件中,如下所示:

#Log all the mail messages in one place
mail.* /var/log/maillog

(2)其他設備也有自己的日志。UUCP和news設備能產生許多外部消息。它把這些消息存到自己的日志(/var/log/spooler)中并把級別限為\"err\"或更高。例如:

# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler

(3)當一個緊急消息到來時,可能想讓所有的用戶都得到。也可能想讓自己的日志接收并保存。

#Everybody gets emergency messages, plus log them on anther machine
*.emerg *
*.emerg @linuxaid.com.cn

(4)有時syslogd將產生大量的消息。例如內核(\"kern\"設備)可能很冗長,用戶很難看得清楚明了,那么用戶可能想把內核消息記錄到/dev/console中。下面的例子表明內核日志記錄被注釋掉了:

#Log all kernel messages to the console
#Logging much else clutters up the screen
#kern.* /dev/console

(5)用戶可以在一行中指明所有的設備。下面的例子把info或更高級別的消息送到/var/log/messages,除了mail以外。級別\"none\"禁止一個設備:

#Log anything(except mail)of level info or higher
#Don\'t log private authentication messages!
*.info:mail.none;autHPriv.none /var/log/messages

#p#

3、syslog進程

syslogd守護程序是由/etc/rc.d/init.d/syslog腳本在運行級2下被調用的,缺省不使用選項。但有兩個選項-r和-h很有用:

  •  如果將要使用一個日志服務器,必須調用syslogd -r。缺省情況下syslogd不接受來自遠程系統的信息。當指定-r選項,syslogd將會監聽從514端口上進來的UDP包。
  •  如果還希望日志服務器能傳送日志信息,可以使用-h標志。缺省時,syslogd將忽略使其從一個遠程系統傳送日志信息到另一個系統的syslogd。

另外,如果需要重新啟動syslog守護進程(/etc/syslog.conf的修改只有在syslog守護進程重新啟動后才會生效),并且只想重新啟動syslog守護進程而不是整個系統,在Red Hat Linux機器上,執行以下兩條命令之一即可:

/etc/rc.d/init.d/syslogstop;/etc/rc.d/init.d/syslogstart
/etc/rc.d/init.d/syslogrestart

4、靈活運用syslog調用接口

在實際的使用過程中,我們可以通過配置文件和查看相應的日志文件來使用syslog。然而,在許多應用場景下,我們往往需要通過程序產生輸出信息并進行記錄,也就是說要把一些信息寫成日志文件,正常情況下運行程序的人不用關心日志里的內容,只有在出現問題的時候才會查看日志文件里的內容以確定問題所在。因此,下面將詳細介紹如何通過syslog日志系統提供的API調用接口,來使用程序實現對syslog的使用。

1.主要的函數

在Linux中,提供了四個有關syslog日志系統的系統調用,供用戶使用:

  •  openlog:打開日志設備,以供讀取和寫入,與文件系統調用的open類似;
  •  syslog:寫入日志,與文件系統調用的write類似;
  •  closelog:關閉日志設備,與文件系統調用的close類似;
  •  vsyslog:它和syslog功能一樣,負責寫入日志,只是參數格式不同。

(1)openlog函數

該函數的聲明如下:

void openlog(const char *ident, int option, int facility);

此函數用來打開一個到系統日志記錄程序的連接,打開之后就可以用syslog或vsyslog函數向系統日志里添加信息了。而closelog函數就是用來關閉此連接的。

openlog的***個參數ident是一個標記,ident所表示的字符串將固定地加在每行日志的前面以標識這個日志,通常就寫成當前程序的名稱以作標記。第二個參數option一般是下列選項值取“與”運算(使用“|”表示,如“LOG_CONS | LOG_PID”)的結果:

  •  LOG_CONS:如果送到system logger時發生問題,直接寫入系統終端;
  •  LOG_NDELAY:立即開啟連接,通常連接是在***次寫入消息時才打開的;
  •  LOG_PERROR:將消息也同時送到stderr設備;
  •  LOG_PID:將進程PID含入所有消息中。

第三個參數facility指明記錄日志的程序的類型,它主要具有如下幾類日志類型:

  •  LOG_AUTH :安全/授權消息
  •  LOG_AUTHPRIV:安全/授權消息
  •  LOG_CRON:時間守護進程(cron和at)專用
  •  LOG_DAEMON:其它系統守護進程
  •  LOG_KERN:核心消息
  •  LOG_LOCAL0到LOG_LOCAL7:系統保留
  •  LOG_LPR:printer子系統
  •  LOG_MAIL:mail子系統
  •  LOG_NEWS:USENET新聞子系統
  •  LOG_SYSLOG:syslogd進程內部所產生的消息
  •  LOG_USER(缺省):一般使用者缺省使用消息
  •  LOG_UUCP:UUCP子系統
  •  LOG_FTP:FTP子系統使用

(2)syslog函數

syslog函數的聲明如下:

void syslog(int priority, const char * message, ...);

***個參數是消息的緊急級別priority,第二個參數是消息及其格式,之后是格式對應的參數,如同C語言里面printf輸出函數一樣使用,具體的格式這里就不再詳述,它不是本書介紹的重點。

這里還需要詳細介紹一下***個參數priority,它是由severity level和facility組成的。Facility已經在上面介紹了,下面介紹一下severity level,也就是消息的重要級別,它主要包括:

  •  LOG_EMERG:緊急狀況
  •  LOG_ALERT:高優先級問題,比如說數據庫崩潰等,必須要立即采取反應行動
  •  LOG_CRIT:重要狀況發生,比如硬件故障
  •  LOG_ERR:錯誤發生
  •  LOG_WARNING:警告發生
  •  LOG_NOTICE:一般狀況,需要引起注意
  •  LOG_INFO:信息狀況
  •  LOG_DEBUG:調試消息

在實際使用中,如果我們的程序要使用系統日志功能,只需要在程序啟動時使用openlog函數來連接syslogd程序,后面隨時用syslog函數寫日志就行了。

(3)closelog函數

相對上述2個函數來說,該函數非常簡單,其聲明如下:

void closelog( void );

值得注意的是,雖然該函數的使用和調用情況非常簡單,但是是必不可少的,因為在Linux系統中,打開的日志也是資源,如果只使用openlog函數打開日志,而忘記使用closelog關閉日志的話,當打開的日志數量累積到一定程度,便會造成內存不足,從而引起系統問題。所以,提醒用戶在使用中特別注意。

2.一個實際的程序調用例子

下面給出一個使用上述幾個函數寫日志的例子,以供大家參考:

#include
#include
#include
int main(void)
{
int log_test;
/*打開日志*/
openlog("log_test ", LOG_PID|LOG_CONS, LOG_USER);
/*寫日志*/
syslog(LOG_INFO, "PID information, pid=%d", getpid());
syslog(LOG_DEBUG,"debug message ");
/*關閉日志*/
closelog();
}

 【編輯推薦】

  1. CairoPlot讓Linux服務器的日志文件更直觀
  2. 日志系統 使Linux管理更輕松
  3. 在Linux系統中安裝系統日志服務器
  4. 明明白白你的Linux服務器——日志篇
  5. Linux日志管理五大命令詳解

 

責任編輯:黃丹 來源: 51CTO.com
相關推薦

2009-12-14 15:41:58

Linux高級電源管理

2025-05-14 08:20:00

Linux權限管理sudo

2010-09-30 10:06:35

2010-11-19 13:01:31

Oracle日志文件

2021-09-12 07:30:10

配置

2010-06-22 10:28:04

linux at命令

2009-11-23 09:54:52

2010-06-24 16:55:47

Linux chgrp

2018-02-07 09:25:50

Linux命令touch

2010-06-18 10:33:03

Linux Acces

2012-08-17 09:38:55

日志管理syslogEvtSys

2017-08-24 11:54:43

Linux日志定時輪循機制

2009-06-08 17:56:00

SpringJDBC事務

2024-04-07 07:49:05

C#Switch模式匹配

2018-03-09 09:15:16

Linuxsyslog-ng日志

2009-01-06 14:19:39

網絡管理員

2010-01-05 16:56:28

2012-05-08 11:01:45

linux守護進程

2013-01-14 16:00:29

Linux系統

2013-01-15 15:18:46

Linux守護進程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本一区二区高清视频 | 精品欧美乱码久久久久久1区2区 | 一区二区三区小视频 | 狠狠插狠狠操 | 国产综合久久久久久鬼色 | 亚洲精品黄色 | 中文在线播放 | 亚洲3级| 欧美精品一区二区免费 | 精品久久久久久亚洲国产800 | h在线 | 一区二区视频免费观看 | 国产精品日日做人人爱 | 日韩成人av在线 | 免费在线看黄 | 国产精品久久久久久久久久 | 欧美激情一区二区三级高清视频 | 日韩中文字幕视频 | 中文字幕精品视频在线观看 | 天天操天天射综合 | 欧美久久一区二区 | 粉色午夜视频 | 亚洲精品乱码久久久久久按摩观 | 欧美国产日韩在线 | 欧美日韩国产一区二区三区 | 精品一区二区三区免费视频 | 97伦理电影 | 国产精品久久久亚洲 | 国产精品资源在线观看 | 欧美极品视频在线观看 | 我要看黄色录像一级片 | 成人在线看片 | 欧美性极品xxxx做受 | 亚洲第一天堂 | 亚洲欧美日韩成人在线 | 精品99在线| 日韩国产在线 | 东方伊人免费在线观看 | 国产精品永久久久久 | 久久不卡日韩美女 | 伊人婷婷 |