logbook日誌系統

2021-09-08 13:28:32 字數 3300 閱讀 8589

python中替代logging的日誌系統。

不過比之前的logging難理解。

先上列印到螢幕上的**和存到日誌檔案中的**:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from logbook import logger, streamhandler, timedrotatingfilehandler
import

sys

import

os

log = logger('logbook')
log.info('hello, world!')
log_dir = os.path.join('log')
if not os.path.exists(log_dir):
os.makedirs(log_dir)
user_log = logger('user_log')
user_log.info('user_log mytest....')
然後看rqalpha**,發現實際上寫主要有兩種型別,一種為列印到螢幕,一種為列印到檔案。

在初始化時,需要先利生成logger例項:

user_log = logger("user_log")

需要列印到螢幕,則生成列印到螢幕的控制代碼:

user_std_handler = user_std_handler = colorizedstderrhandler(bubble=true)

然後對此控制代碼設定日誌格式:

user_std_handler.formatter = user_handler_log_formatter

若想使此設定生效,

只需申明user_log的控制代碼:

user_log.handlers =

然後將之加入即可

同理,如果希望日誌同時支援列印到檔案,只需按照上述步驟再來一次即可。

user_file_handler = timedrotatingfilehandler(

os.path.join(os.path.join('log') , '%s.log' % 'test_log'), date_format='%y%m%d', bubble=true)

user_file_handler.formatter = user_handler_log_formatter

user_handler_log_formatter是乙個日誌格式函式,返回列印的日誌以什麼方式呈現。

整體**如下:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# filename:logger.py
import

os

import logbook
from logbook import logger, timedrotatingfilehandler
from logbook.more import colorizedstderrhandler
datetime_format = "%y-%m-%d %h:%m:%s.00"
def user_handler_log_formatter(record, handler):
log = " ".format(
dt=record.time,
level=record.level_name,                       # 日誌等級
filename = os.path.split(record.filename)[-1], # 檔名
func_name = record.func_name,                  # 函式名
lineno = record.lineno,                        # 行號
msg=record.message,                            # 日誌內容
)
return log
# 列印到螢幕控制代碼
user_std_handler = colorizedstderrhandler(bubble=true)
user_std_handler.formatter = user_handler_log_formatter
# 日誌路徑,在主工程下生成log目錄
log_dir = os.path.join('log')
if not os.path.exists(log_dir):
os.makedirs(log_dir)
# 列印到檔案控制代碼
user_file_handler = timedrotatingfilehandler(
os.path.join(log_dir , '%s.log' % 'test_log'), date_format='%y%m%d', bubble=true)
user_file_handler.formatter = user_handler_log_formatter
# 使用者**logger日誌
user_log = logger("user_log")
def init_logger():
logbook.set_datetime_format("local")
user_log.handlers =

# 初始化日誌系統(被預設呼叫)
init_logger()
測試**如下:

#!/usr/bin/evn python3
# -*- coding: utf-8 -*-
# filename: test_looger.py
import

os

from logger import user_log as logger
if __name__ == "__main__":
logger.info("my test.")
列印日誌如下:

[2017-08-26 19:10:10.226902][info][test_logger.py][8] my test.

python列印日誌logbook

import os import sys import logbook from logbook import logger,streamhandler,filehandler,timedrotatingfilehandler from logbook.more import colorizedst...

Logbook模組 logging的高階封裝版

pip install logbook目前僅封裝了檔案日誌輸出和控制台日誌輸出,可以自定義列印格式。from pathlib2 import path import logbook from logbook import logger,timedrotatingfilehandler from lo...

自動化框架之logbook

python 利用logbook模組管理日誌 1.模組安裝 採用pip命令安裝 進入cmd命令,輸入pip install logbook安裝,安裝成功之後採用pip show logbook檢視相關資訊 2.logbook簡介 3.用法說明 import os import logbook fro...