python logging rsyslog混合使用


簡介:

  企業規模大了,場景業務多了,日志不能再分散處理了。那么第一選擇就是日志服務器,一台服務器就可以查看所有業務的日志,當然,也要有專門的數據庫存儲日志,專門的WEB瀏覽日志。

  作為linux的默認日志服務,rsyslog就是我們的第一選擇了,它即是linux系統的日志服務,也可以配置開放端口作為中央日志服務器。

  rsyslog能夠接受從各種各樣的來源,將其輸入,輸出的結果到不同的目的地。rsyslog可以提供超過每秒一百萬條消息給目標文件。

  簡單說,我們寫python程序的時候,日志使用logging模塊,是可以直接輸出到遠程的rsyslog中央日志服務器的。

一:安裝rsyslog

我測試使用的fedora默認已經安裝了,沒安裝的話,自己dnf apk ……根據自己的系統裝一下。

二:配置rsyslog

rsyslog的配置文件為: /etc/rsyslog.conf

編輯此文件即可。

1.MODULES

模塊:可以理解為rsyslog的插件,配置打開這些插件,rsyslog就開啟了這個功能,我比較關心的是tcp、udp端口監聽記錄功能

# Provides UDP syslog reception
# for parameters see http://www.rsyslog.com/doc/imudp.html
#module(load="imudp") # needs to be done just once
#input(type="imudp" port="514")

# Provides TCP syslog reception
# for parameters see http://www.rsyslog.com/doc/imtcp.html
module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")

我取消了tcp端口514的注釋,即監聽514端口tcp協議。記錄發向這里的日志內容。

2.RULES

規則:記錄的保存規則吧。

$template DynamicFile,"/var/log/%HOSTNAME%/forwarded-logs.log"
*.* -?DynamicFile

我在RULES下面增加了這個內容

第一行是文件名模板,

第二行是任何日志都保存到這個模板文件名中。

3.數據庫

實驗沒到這里,候補

三:python logging

import logging
import socket
from logging import handlers

#初始化日志
logger = logging.getLogger("AppName")

# 指定logger輸出格式
formatter = logging.Formatter('%(asctime)s %(levelname)-8s: (%(name)s)%(pathname)s %(message)s')

#rsyslog日志處理器
rsyslog_handler=handlers.SysLogHandler(address=('10.0.0.10', 514), socktype=socket.SOCK_STREAM)
rsyslog_handler.setFormatter(formatter)

# 為logger添加的日志處理器
logger.addHandler(rsyslog_handler)

# 指定日志的最低輸出級別,默認為WARN級別
logger.setLevel(logging.DEBUG)

# 輸出不同級別的log
logger.debug('文件? ')
logger.info('this is information')
logger.warning('this is warning message')
logger.error('this is error message')
logger.fatal('this is fatal message, it is same as logger.critical')
logger.critical('this is critical message')

關鍵的是設置服務器地址,端口,還有協議,sysloghandler默認使用udp協議,

socktype=socket.SOCK_STREAM    是定義tcp協議

10.0.0.10    514 是定義rsyslog服務器地址和端口  只要能解析,填主機名,域名都可以。

暫時到這里吧,凌晨1點多了。雖然還有數據庫問題,儲存格式,儲存內容一些問題沒有解決。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM