最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python3使用logging包,如何把日志寫(xiě)到系統(tǒng)的rsyslog中

 更新時(shí)間:2023年09月06日 09:10:35   作者:微笑永恒-  
這篇文章主要介紹了python3使用logging包,如何把日志寫(xiě)到系統(tǒng)的rsyslog中的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

使用logging包,把日志寫(xiě)到系統(tǒng)的rsyslog中

最近要寫(xiě)一個(gè)python程序?qū)懭罩镜絩syslog中,并通過(guò)配置rsyslog的文件來(lái)將他存到一個(gè)指定文件中。

首先,我想來(lái)看看logging提供的常用模塊:

logger

logger主要是用來(lái)配置和發(fā)送日志消息的。

可通過(guò)logging.getLogger(name)來(lái)返回一個(gè)logger對(duì)象。

不指定name就默認(rèn)為root。

這里可以取一個(gè)合適的名字。

相同的name會(huì)返回同一個(gè)logger對(duì)象。

在Formatter方法中用%(name)s在日志中打印出這個(gè)name。

例如:

log = logging.getLogger('mylog')
log_format = logging.Formatter(
    'hhl-%(name)s-server[%(process)d]-%(levelname)s: %(message)s')
#打印結(jié)果示例:
#Aug  2 12:44:41 [localhost] hhl-mylog-server[7409]-DEBUG: debug message

handler

將日志記錄發(fā)送到目的地,如文件,socket等。

這里可以通過(guò)addHandler方法添加多個(gè)handler,可以實(shí)現(xiàn)日志的分級(jí)過(guò)濾。

如果要把日志發(fā)送到rsyslog中,就可以采用SysLogHandler(),使用這個(gè)方法前需要導(dǎo)入他

from logging.handlers import SysLogHandler

這個(gè)方法有兩個(gè)參數(shù)、一個(gè)是rsyslog中的facility:指定的是發(fā)送的設(shè)備,如kernel,mail,system等等,他還有l(wèi)ocal0-local7預(yù)留。

這里我采用local5。

還有一個(gè)參數(shù)指定的是log程序的地址,在centos7上默認(rèn)是/dev/log。

示例如下:

log_hdlr=SysLogHandler(facility=SysLogHandler.LOG_LOCAL5, address='/dev/log')

對(duì)應(yīng)的rsyslog設(shè)置文件(/etc/rsyslog.conf):

local5.*						/var/log/all.log
#將local5的所有日志存入all.log文件中

如果想用handler對(duì)日志信息進(jìn)行過(guò)濾

可以這樣:

log_hdlr.setLevel(logging.ERROR)
#這里就指定了接收error以及更高級(jí)別的日志

formatter

指定日志的輸出格式,包括消息格式和日期字符格式

例如:

log_format = logging.Formatter(
    'hhl-%(name)s-server[%(process)d]-%(levelname)s: %(message)s')
#輸出示例
#Aug  2 12:44:41 [localhost] hhl-mylog-server[7409]-DEBUG: debug message

formatter可調(diào)用參數(shù)有:

  • %(name)sLogger的名字
  • %(levelname)s文本形式的日志級(jí)別
  • %(message)s用戶(hù)輸出的消息
  • %(asctime)s字符串形式的當(dāng)前時(shí)間。默認(rèn)格式是 “2003-07-08 16:49:45,896”。逗號(hào)后面的是毫秒
  • %(levelno)s數(shù)字形式的日志級(jí)別
  • %(pathname)s調(diào)用日志輸出函數(shù)的模塊的完整路徑名,可能沒(méi)有
  • %(filename)s調(diào)用日志輸出函數(shù)的模塊的文件名
  • %(module)s 調(diào)用日志輸出函數(shù)的模塊名
  • %(funcName)s調(diào)用日志輸出函數(shù)的函數(shù)名
  • %(lineno)d調(diào)用日志輸出函數(shù)的語(yǔ)句所在的代碼行
  • %(created)f當(dāng)前時(shí)間,用UNIX標(biāo)準(zhǔn)的表示時(shí)間的浮 點(diǎn)數(shù)表示
  • %(relativeCreated)d輸出日志信息時(shí)的,自Logger創(chuàng)建以 來(lái)的毫秒數(shù)
  • %(thread)d線(xiàn)程ID??赡軟](méi)有
  • %(threadName)s線(xiàn)程名。可能沒(méi)有
  • %(process)d進(jìn)程ID??赡軟](méi)有

由上面的這些模塊就可以實(shí)現(xiàn)我想要的功能啦

將日志寫(xiě)入到all.log文件中-----

源代碼

import logging
from logging.handlers import SysLogHandler
log = logging.getLogger('mylog')
log.setLevel(logging.DEBUG)
log_hdlr=SysLogHandler(facility=SysLogHandler.LOG_LOCAL5, address='/dev/log')
log_format = logging.Formatter(
    'hhl-%(name)s-server[%(process)d]-%(levelname)s: %(message)s')
log_hdlr.setFormatter(log_format)
log_hdlr.setLevel(logging.ERROR)#接受error及以上的日志信息
log.addHandler(log_hdlr)
log.debug('debug message test')#指明級(jí)別為debug
log.error('error message test')#指明級(jí)別為error
#最后只保存error及更高優(yōu)先級(jí)的日志

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

霍城县| 衡水市| 揭东县| 宣武区| 澎湖县| 康马县| 旬阳县| 静宁县| 景宁| 定陶县| 庆云县| 昌吉市| 珠海市| 伊宁县| 西青区| 健康| 滦平县| 五莲县| 永川市| 白银市| 侯马市| 乡宁县| 佛学| 渭南市| 大荔县| 衡南县| 吴江市| 永清县| 白朗县| 浦北县| 尤溪县| 临西县| 北海市| 湾仔区| 枝江市| 格尔木市| 阿拉善右旗| 阳信县| 龙江县| 伊川县| 英超|