久久久精品网站,成人伊人网,色吧av色av,亚洲AV永久无码精品秋霞电影影院

stream.sys(streamsystem)

前沿拓展:

stream.sys

壓縮成zip文件上傳了。你自己解壓吧。
望能解決你的問題。
附件:stream.zip


stream.sys(streamsystem)

作者:東東 yasking

來源:https://blog.yasking.org/a/python-logbook.html

Python 本身有l(wèi)ogging日志記錄模塊,之前發(fā)現(xiàn)了logbook這個包,介紹說是替代logging,索性整理一下,方便之后使用

>>> from logbook import Logger, StreamHandler

>>> import sys

>>> StreamHandler(sys.stdout).push_application

>>> log = Logger(‘Logbook’)

>>> log.info(‘Hello, World!’)

[2015-10-05 18:55:56.937141] INFO: Logbook: Hello, World!

上邊這是文檔中給出的例子,它定義了許多的Handler,可以把日志記錄到標(biāo)準(zhǔn)輸出,文件,E-MAIL,甚至Twitter

StreamHandler

使用 StreamHandler記錄的日志會以流輸出,這里指定sys.stdout也就是記錄到標(biāo)準(zhǔn)輸出,與print一樣

(一)可以使用 with來在一定作用域內(nèi)記錄日志

# -*- coding: utf-8 -*-

from logbook import Logger, StreamHandler

import logbook

import sys

handler = StreamHandler(sys.stdout)

log = Logger(‘test’)

def main:

log.info(‘something logging’)

if __name__ == ‘__main__’:

with handler.applicationbound:

main

(二)也可以指定作用于整個應(yīng)用

# -*- coding: utf-8 -*-

from logbook import Logger, StreamHandler

import logbook

import sys

handler = StreamHandler(sys.stdout)

handler.push_application

log = Logger(‘test’)

def main:

log.info(‘something logging’)

if __name__ == ‘__main__’:

main

FileHandler

使用 FileHandler可以把日志記錄到文件,這也是最常見的方式

# -*- coding: utf-8 -*-

from logbook import Logger, FileHandler

import logbook

import sys

handler = FileHandler(‘app.log’)

handler.push_application

log = Logger(‘test’)

def main:

log.info(‘something logging’)

if __name__ == ‘__main__’:

main

日志就寫到了 app.log文件

同時輸出到文件與STDOUT

同時把記錄輸出到多個地方可以方便查閱和記錄,初始化 Handler的時候設(shè)置bubble參數(shù)就可以使得其它Handler也可以接收到記錄

from logbook import Logger, StreamHandler, FileHandler

import logbook

import sys

”’

記錄日志到文件和STDOUT

”’

StreamHandler(sys.stdout, level=’DEBUG’).push_application

FileHandler(‘app.log’, bubble=True, level=’INFO’).push_application

log = Logger(‘test’)

def main:

log.info(‘hello world’)

if __name__ == ‘__main__’:

main

另外,通過 level可以設(shè)置日志級別,級別如下,從下到上級別越來越高,如level設(shè)置為INFO, 則除了DEBUG外都會記錄,設(shè)置不同的級別,搭配各種Handler可以讓日志的記錄更加靈活,上邊使用的log.info可以使用不同的記錄級別

級別說明critical嚴(yán)重錯誤,需要退出程序error錯誤,但在可控范圍內(nèi)warning警告notice大多數(shù)情況下希望看到的記錄info大多數(shù)情況不希望看到的記錄debug調(diào)試程序的時候詳細(xì)輸出的記錄

MailHandler

和日志文件同樣重要的就是 MailHandler了,當(dāng)出現(xiàn)了比較嚴(yán)重錯誤的時候就要發(fā)送郵寄進行通知

詳細(xì)的文檔見:

分別使用了 163和qq郵箱發(fā)送郵件測試,使用的郵箱需要開啟**TP權(quán)限,代碼如下(163和qq發(fā)送參數(shù)稍有不同)

# -*- coding: utf-8 -*-

from logbook import Logger, MailHandler

import logbook

import sys

sender = ‘Logger’

recipients = [‘dongdong@163.com’]

email_user = ‘dongdong@qq.com’

email_pass = ‘password’

mail_handler = MailHandler(sender, recipients,

server_addr=’**tp.qq.com’,

starttls=False,

secure = True,

credentials=(email_user, email_pass),

format_string=u”’

Subject: {record.level_name} on My Application

Message type: {record.level_name}

Location: {record.filename}:{record.lineno}

Module: {record.module}

Function: {record.func_name}

Time: {record.time:%Y-%m-%d %H:%M:%S}

Remote IP: {record.extra[ip]}

Request: {record.extra[url]} [{record.extra[method]}]

Message: {record.message}

”’,

bubble=True)

log = Logger(‘test’)

def main:

log.info(‘something logging’)

if __name__ == ‘__main__’:

with mail_handler.threadbound:

main

內(nèi)容 format_string中的用大括號的會進行數(shù)值替換,Subject字段上邊的“和下邊需要空一行,這樣解析參數(shù)收到的郵件才會正確的顯示標(biāo)題

Record Processors

上邊發(fā)送郵件的例子,參數(shù)里面有一個 record.extra[url],這個參數(shù)是可以自己指定的,比如編寫WSGI的程序,處理URL,每一條記錄都希望記錄到訪問者的IP,可以這樣做:

# -*- coding: utf-8 -*-

from logbook import Logger, StreamHandler, Processor

import logbook

import sys

handler = StreamHandler(sys.stdout)

handler.format_string = ‘[{{record.time:%Y-%m-%d %H:%M:%S}}] IP:{record.extra[ip]} {record.level_name}: {record.channel}: {record.message}’

handler.formatter

log = Logger(‘test’)

def inject_ip(record):

record.extra[‘ip’] = ‘127.0.0.1’

with handler.applicationbound:

with Processor(inject_ip).applicationbound:

log.error(‘something error’)

使用自定義參數(shù),需要重新設(shè)置 format_string,才能進行記錄,record類可以在這里找到,詳細(xì)參數(shù)見logbook.LogRecord

Output:

[2016-12-13 12:20:46] IP:127.0.0.1 ERROR: test: something error

日期格式

上邊在介紹的自定義日志格式的時候使用的時間是雖然指定了格式但是是 UTC格式,跟北京時間是差了8個小時的。所以需要設(shè)置讓它記錄本地的時間

在剛才的例子前面加上如下代碼即可

logbook.set_datetime_format(‘local’) # <= 新加入行

handler = StreamHandler(sys.stdout)

handler.format_string = ‘[{record.time:%Y-%m-%d %H:%M:%S}] IP:{record.extra[ip]} {record.level_name}: {record.channel}: {record.message}’

handler.formatter

更過日期格式化的設(shè)置參看:api/utilities – logbook.set_datetime_format(datetime_format)

threadbound與applicationbound

從最開始的例子來看,可以使用兩種方式來記錄日志,一種是在最開始使用 push_*來激活,另一種是使用的時候用with構(gòu)造上下文,現(xiàn)在進行一些補充

pushwithpoppush_applicationapplicationboundpop_applicationpush_threadthreadboundpop_threadboundpush_greenletgreenletboundpop_greenlet

使用 pop_*可以取消記錄的上下文

application作用于整個應(yīng)用,thread只針對當(dāng)前線程

handler = MyHandler

handler.push_application

# all here goes to that handler

handler.pop_application

消除嵌套

使用多個Handler的時候,使用 push_方式啟動的上下文不會形成嵌套,但是使用with啟動的上下文會形成嵌套,可以使用nested handler

import os

from logbook import NestedSetup, Handler, FileHandler,

MailHandler, Processor

def inject_information(record):

record.extra[‘cwd’] = os.getcwd

setup = NestedSetup([

# Handler避免stderr接受消息

Handler(),

FileHandler(‘application.log’, level=’WARNING’),

MailHandler(‘servererrors@example.com’, [‘admin@example.com’],

level=’ERROR’, bubble=True),

Processor(inject_information)

])

使用的時候就只需要一個 with來啟動

with setup.threadbound:

log.info(‘something logging’)

logbook是個不錯的包,記錄日志靈活方便,比自己包裝發(fā)送郵件方便了不少,整理了一些基本用法,還有不少值得學(xué)習(xí)的功能,暫時能用到的基本上就這么多,之后用到高級的功能再繼續(xù)研究補充。

題圖:pexels,CC0 授權(quán)。

拓展知識:

stream.sys

你可以用冰刃試試(iceword)把**文件徹底刪除,http://www.crsky.com/soft/6947.html

stream.sys

開機時多按幾次F8鍵進安全模式殺毒

原創(chuàng)文章,作者:九賢生活小編,如若轉(zhuǎn)載,請注明出處:http://xiesong.cn/41537.html

久久久人妻12P| 亚洲欧洲久久| 久久无码一区二区波多野结衣| swag无码| 日韩人妻精品无码| 欧洲人妻无码| a天堂精品免费| 一级二级三级片| 大宁县| 精品大香蕉| 亚洲精品无码专区久久| 人妻丰满熟妇av无码区hd| 日韩欧美夫妻生活网| 国产精品人成电影在线观看 | 开裆丝袜视频国产| 综合色国产日韩| 成全高清视频免费观看动漫版| 狠狠操一区2区| 少妇se| 玖玖亚洲精品国产| 国产鞋交日韩综合| 国产成人精品久久亚洲高清不卡| 日本 五十路 在线| 黑人轮奸日韩| 黄色视频无码免费| 香蕉大香蕉在线网| 欧美亚洲成人小说| 欧美熟妇色国产| AV无码国产亚洲| 内射日韩妇女| 人妻丰满av无码中文字幕| 五月激情六月激情| 鄂托克前旗| 污污视频h蜜桃| 人人操人人干人人色| 婷婷av在线| 欧美日韩国产片区| 久久久久人妻精品一区蜜桃| 国产欧美另类久久久| 中文字幕网在线网站| 一品道欧美在线|