關(guān)于日志的收集(二)

上一篇我們已經(jīng)對log進(jìn)行過簡單的封裝纳胧,現(xiàn)在來說另外一種霉撵,在配置文件中進(jìn)行磺浙,1洪囤、將配置文件寫錯yaml的格式,2撕氧、將配置文件寫成dict的格式瘤缩,yaml文件和dict本質(zhì)上一樣,直接上代碼
1伦泥、新建setting目錄剥啤,新建一個settings.py

'''
    logging模塊有三個比較重要的功能組件:
    1、loggers :日志記錄器的名稱不脯,比如loggers1府怯,login模塊
    2、handler :日志的分隔大小,輸出位置,日志文件創(chuàng)建等
    3防楷、formatters 配置日志輸出的格式
'''
from datetime import datetime
import logging
class myFilter(logging.Filter):
    def filter(self, record):
        '''
         一般根據(jù)日志收集器的名字牺丙,日志級別過濾一些日志
         debug:10
         info:20
         warning:30
         error:40
         critical:50

        '''
        #過濾掉日志名稱為login的日志
        if record.name == 'login':
            return False
        # 過濾掉level低于30(warning)的日志
        if record.levelno <= 30:
            return False
        return True


LOGGING_DICT = {
    "version": 1.0,
    'disable_existing_loggers': False,
    # 自定義幾個日志的輸出格式,供下面處理器選擇复局,我定義了兩種
    'formatters': {
        'standard': {
            'format': '%(asctime)s [%(name)s] %(levelname)s [%(pathname)s:%(lineno)d]  %(module)s [%(funcName)s] %(message)s',
            'datefmt': '%Y-%m-%d %H:%M:%S', },#默認(rèn)的日期格式里面有毫秒冲簿,我們希望得到2022-08-29 12:01:30這種格式
        'simple': {
            'format': '%(asctime)s [%(name)s] %(levelname)s %(message)s',
            'datefmt': '%Y-%m-%d %H:%M:%S', },
    },
    #添加到handler里面即可使用,也支持多個同時添加
    'filters': {
        "myfilters": {
            "()": myFilter
        }
},
    # 日志處理器亿昏,我們定義了兩種峦剔,一個輸出到終端,一個輸出到文件
    'handlers': {
        'console_handler': {
            'level': 'DEBUG',  # 日志處理的級別限制
            'class': 'logging.StreamHandler',  # 輸出到終端
            'formatter': 'simple' , # 日志格式
            'filters': ["myfilters"]
        },
        'file_handler': {
            'level': 'DEBUG',#日志級別:debug角钩,info吝沫,warning,error递礼,critical
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件,日志輪轉(zhuǎn)
            'filename': datetime.now().date().strftime('%Y%m%d') + ".log",  # 以當(dāng)天的日期命名日志惨险,便于查詢,如20220826.log宰衙,20220827.log平道,根據(jù)自己項(xiàng)目配置路徑即可
            'maxBytes': 1024 * 1024 * 10,  # 日志大小 10M
            'backupCount': 10,  # 日志文件保存數(shù)量限制
            'encoding': 'utf-8',  # 日志編碼
            'formatter': 'standard',  # 日志格式,上面formatters里面自定義的
        },

    },
    # 日志記錄器
    "loggers": {
        '': {  # 如果為空供炼,則是你后面使用的時候自定義傳入的名字,如果不為空窘疮,那你使用的時候就是當(dāng)前寫死的名字
            'handlers': ['console_handler', 'file_handler'],  # 日志分配到哪個handlers中袋哼,可以一個,可以多個闸衫,列表形式涛贯,這種就是即打印到終端,也存入到文件
            'level': 'INFO',  # 日志記錄的級別限制
            'propagate': False,  # 默認(rèn)為True蔚出,向上(更高級別的logger)傳遞弟翘,設(shè)置為False即可虫腋,否則會一份日志向上層層傳遞
        },
    }

}

2、在setting目錄下面新建一個index.py

import logging.config#導(dǎo)入logging模塊里面的config包
from setting import settings#導(dǎo)入我們的配置文件

logging.config.dictConfig(settings.LOGGING_DICT)#直接讀取我們配置的字段內(nèi)容
#下面是自己定義的一些函數(shù)進(jìn)行試驗(yàn)
def login():
    logger2 = logging.getLogger('登錄')#這里傳入登錄稀余,就是我們的搜集器的名稱就是登錄悦冀,根據(jù)自己的情況寫就好了,有的直接以項(xiàng)目名稱命名
    logger2.info('***登錄成功了')


def look():
    logger3 = logging.getLogger('瀏覽')
    logger3.info('正在瀏覽手機(jī)類商品')


def get_order():
    logger4 = logging.getLogger('下單')
    logger4.warning("下單發(fā)生延遲")


def pay():
    logger5 = logging.getLogger('支付')
    logger5.error("***支付失敗")
if __name__ == '__main__':
    for i in range(2):
        login()
        look()
        get_order()
        pay()

3睛琳、執(zhí)行上面的index.py盒蟆,在setting目錄下生成20220829.log文件,終端也會根據(jù)我們定義的格式保存日志;
20220829.log

2022-08-29 12:01:30 [登錄] INFO [D:\python\setting\index.py:9]  index [login] ***登錄成功了
2022-08-29 12:01:30 [瀏覽] INFO [D:\python\setting\index.py:14]  index [look] 正在瀏覽手機(jī)類商品
2022-08-29 12:01:30 [下單] WARNING [D:\python\setting\index.py:19]  index [get_order] 下單發(fā)生延遲
2022-08-29 12:01:30 [支付] ERROR [D:\python\setting\index.py:24]  index [pay] ***支付失敗
2022-08-29 12:01:30 [登錄] INFO [D:\python\setting\index.py:9]  index [login] ***登錄成功了
2022-08-29 12:01:30 [瀏覽] INFO [D:\python\setting\index.py:14]  index [look] 正在瀏覽手機(jī)類商品
2022-08-29 12:01:30 [下單] WARNING [D:\python\setting\index.py:19]  index [get_order] 下單發(fā)生延遲
2022-08-29 12:01:30 [支付] ERROR [D:\python\setting\index.py:24]  index [pay] ***支付失敗

終端:

2022-08-29 12:01:30 [登錄] INFO ***登錄成功了
2022-08-29 12:01:30 [瀏覽] INFO 正在瀏覽手機(jī)類商品
2022-08-29 12:01:30 [下單] WARNING 下單發(fā)生延遲
2022-08-29 12:01:30 [支付] ERROR ***支付失敗
2022-08-29 12:01:30 [登錄] INFO ***登錄成功了
2022-08-29 12:01:30 [瀏覽] INFO 正在瀏覽手機(jī)類商品
2022-08-29 12:01:30 [下單] WARNING 下單發(fā)生延遲
2022-08-29 12:01:30 [支付] ERROR ***支付失敗

總之师骗,這樣配置文件的方式其實(shí)更方便我們使用历等,什么地方需求,導(dǎo)入就行了辟癌,修改配置的時候也方便

追加

關(guān)于handler里面的兩個日志文件的參數(shù)

'maxBytes': 4000,  # 單位是字節(jié)寒屯,比如1024*1024就是1M,一般寫大一點(diǎn)但是也不要太大
'backupCount': 3,  # 日志文件保存數(shù)量限制

比如按照上面這樣配置黍少,那我的日志文件會生成20220902.log一個文件浩螺,文件大小超過4000字節(jié)之后,會生成20220902.log.1(本質(zhì)上20220902.log的內(nèi)容放在這個新文件里面仍侥,重新生成新的.log)
以此類推要出,當(dāng)20220902.log再次大于4000字節(jié),會生成20220902.log.2,會生成20220902.log.3
'backupCount': 3,現(xiàn)在就會限制生成的數(shù)量农渊,當(dāng)log繼續(xù)生成的時候患蹂,超過的部分文件就會被自動刪除,因此同時最多保持4個log文件

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末砸紊,一起剝皮案震驚了整個濱河市传于,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌醉顽,老刑警劉巖沼溜,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異游添,居然都是意外死亡系草,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門唆涝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來找都,“玉大人,你說我怎么就攤上這事廊酣∧艹埽” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長晓猛。 經(jīng)常有香客問我饿幅,道長,這世上最難降的妖魔是什么戒职? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任栗恩,我火速辦了婚禮,結(jié)果婚禮上帕涌,老公的妹妹穿的比我還像新娘摄凡。我一直安慰自己,他們只是感情好蚓曼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布亲澡。 她就那樣靜靜地躺著,像睡著了一般纫版。 火紅的嫁衣襯著肌膚如雪床绪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天其弊,我揣著相機(jī)與錄音癞己,去河邊找鬼。 笑死梭伐,一個胖子當(dāng)著我的面吹牛痹雅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播糊识,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼绩社,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赂苗?” 一聲冷哼從身側(cè)響起愉耙,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拌滋,沒想到半個月后朴沿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡败砂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年赌渣,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吠卷。...
    茶點(diǎn)故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡锡垄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出祭隔,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布疾渴,位于F島的核電站千贯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏搞坝。R本人自食惡果不足惜搔谴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望桩撮。 院中可真熱鬧敦第,春花似錦、人聲如沸店量。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽融师。三九已至右钾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間旱爆,已是汗流浹背舀射。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留怀伦,地道東北人脆烟。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像房待,于是被迫代替她去往敵國和親邢羔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容