python之syslog模組

  • 2020 年 1 月 11 日
  • 筆記

syslog模組為提供了rsyslog模組的一個介面。可以記錄程式運行時的輸出資訊。

個人認為此方法沒有logging模組方便

常用方法如下:

syslog.open(indent[,logopt[,facility]])  ####初始化rsyslog日誌介面函數

syslog.syslog([priority],message)    #######將message記錄到日誌文件

syslog.closelog()               ########關閉日誌

syslog.open(indent[,logopt[,facility]])方法

indent參數:

>>> import syslog

>>> syslog.openlog('gyyx.py')

>>> syslog.syslog('this is a brief test!')

[root@cdn ~]# tail -f /var/log/messages

Mar 16 12:19:11 cdn gyyx.py: this is a brief test!   

logopt參數:

選項名稱:LOG_CONS,LOG_NDELAY,LOG_NOWAIT,LOG_PID,LOG_PERROR

可以從中選擇一個,或者多個(要藉助或操作符」|」)

>>> syslog.openlog('gyyx.py',syslog.LOG_PID)   ##########日誌增加了進程PID

>>> syslog.syslog('this is a brief test!and add pid')

[root@cdn ~]# tail -f /var/log/messages

Mar 16 12:23:21 cdn gyyx.py[11887]: this is a brief test!and add pid

facility參數:

名稱:

LOG_AUTH,LOG_CRON,LOG_DAEMON,LOG_KERN,LOG_LOCALx,LOG_LPR,LOG_MAIL,LOG_NEWS,LOG_USER,LOG_UUCP,系統管理員使用這些參數配置資訊如何分解到不同的文件和服務中。在前面,我們一直將資訊輸出到messages文件中,這次,我們要結合syslog.conf的配置來將其輸出到其他文件了。修改rsyslog.conf,修改如下:

*.info;mail.none;authpriv.none;cron.none;auth.none    /var/log/messages  #驗證不寫入message

auth.*               /var/log/python.auth  ######驗證寫入此文件

syslog.openlog('test.py',syslog.LOG_PID|syslog.LOG_NOWAIT,syslog.LOG_AUTH)

syslog.syslog('the process is test.py111111111111111111111')

syslog.closelog()

[root@cdn ~]# tail -f /var/log/python.auth 

Mar 16 12:03:08 cdn test.py[11857]: the process is test.py111111111111111111111

Mar 16 12:04:54 cdn test.py[11874]: the process is test.py111111111111111111111

Mar 16 12:05:07 cdn test.py[11877]: the process is test.py111111111111111111111

syslog.syslog([priority],message)方法

Priority參數

名稱:LOG_EMERG,LOG_ALERT,LOG_CRIT,LOG_ERR,LOG_WARNING,LOG_INFO,LOG_DEBUG(默認為LOG_INFO)