亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

最近要寫一個python程序?qū)懭罩镜絩syslog中,并通過配置rsyslog的文件來將他存到一個指定文件中。

首先,我想來看看logging提供的常用模塊:

logger

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

可通過logging.getLogger(name)來返回一個logger對象。

不指定name就默認為root。

這里可以取一個合適的名字。

相同的name會返回同一個logger對象。

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

例如:

log = logging.getLogger('mylog')
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

handler

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

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

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

from logging.handlers import SysLogHandler

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

這里我采用local5。

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

示例如下:

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

對應的rsyslog設置文件(/etc/rsyslog.conf):

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

如果想用handler對日志信息進行過濾

可以這樣:

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

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

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

將日志寫入到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')#指明級別為debug
log.error('error message test')#指明級別為error
#最后只保存error及更高優(yōu)先級的日志

總結

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

相關文章

  • python爬取氣象臺每日天氣圖代碼

    python爬取氣象臺每日天氣圖代碼

    大家好,本篇文章主要講的是python爬取氣象臺每日天氣圖代碼,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • Python中字典和JSON互轉(zhuǎn)操作實例

    Python中字典和JSON互轉(zhuǎn)操作實例

    這篇文章主要介紹了Python中字典和JSON互轉(zhuǎn)操作實例,本文給出了Dict轉(zhuǎn)JSON、讀取JSON并轉(zhuǎn)為Dict示例,需要的朋友可以參考下
    2015-01-01
  • 使用Python實現(xiàn)tail的示例代碼

    使用Python實現(xiàn)tail的示例代碼

    tail是一個常用的Linux命令, 它可以打印文件的后面n行數(shù)據(jù), 也能實時輸出文件的追加數(shù)據(jù)。本文就來用Python實現(xiàn)tail,感興趣的可以了解一下
    2023-03-03
  • python如何刪除列為空的行

    python如何刪除列為空的行

    在本篇文章里小編給大家整理的是關于python刪除列為空的行方法,對此有需要的朋友們可以學習下。
    2020-07-07
  • 詳解Python中type與object的恩怨糾葛

    詳解Python中type與object的恩怨糾葛

    估計很多人都會有這樣一個困惑,object?的類型是?type,但它同時又是?type?的基類,這是怎么做到的?帶著這個疑問,我們開始本文的內(nèi)容
    2023-04-04
  • Pyecharts之特殊圖表的實現(xiàn)示例

    Pyecharts之特殊圖表的實現(xiàn)示例

    本文主要介紹了Pyecharts之特殊圖表的實現(xiàn)示例,包括象形圖、水球圖和日歷圖的定制方法,具有一定的參考價值,感興趣的可以了解一下
    2025-01-01
  • 通過5個知識點輕松搞定Python的作用域

    通過5個知識點輕松搞定Python的作用域

    網(wǎng)上關于python的作用域介紹有很多,那么小編今天給大家分享的這篇文章是讓大家通過學習這5個知識點,可以輕松搞定Python的作用域,有需要的朋友們可以參考借鑒。
    2016-09-09
  • Python?Pygame實現(xiàn)可控制的煙花游戲

    Python?Pygame實現(xiàn)可控制的煙花游戲

    大家好,本篇文章主要講的是Python?Pygame實現(xiàn)可控制的煙花游戲,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • python字符串編碼識別模塊chardet簡單應用

    python字符串編碼識別模塊chardet簡單應用

    有時候需要先檢測一個文件的編碼,然后將其轉(zhuǎn)化為另一種編碼。這時候就會用到chardet(chardet是python的一個第三方庫,是非常優(yōu)秀的編碼識別模塊)
    2015-06-06
  • 如何使Python中的print()語句運行結果不換行

    如何使Python中的print()語句運行結果不換行

    這篇文章主要介紹了如何使Python中的print()顯示當前語句后不換行,print() 是一個常用函數(shù),但是每次,print()語句顯示后都會換行,本問我們就來節(jié)日如何使print()顯示當前語句后不換行,需要的朋友可以參考一下
    2022-03-03

最新評論