python服务端开发调试日志系统_Python:如何进行延迟调试日志记录
我有一些像這樣的python:
def foo():
logger = logging.getLogger()
# do something here
logger.debug('blah blah {}'.format(expensive_func()))
foo()
其中expensive_func()是一個返回字符串的函數,執行起來很昂貴.
在開發時,日志級別設置為DEBUG,并且執行expensive_func(),消息被記錄,一切都很好.
問題是,當我將日志級別設置為嚴格大于DEBUG(例如WARNING)時,在生產環境中,顯然不會記錄expensive_func()的返回值,但仍會執行昂貴的函數本身.
我的問題是:當日志級別為WARNING時,如何防止python出現昂貴的函數?
我不想刪除該調試行或添加類似if level>的內容. DEBUG:返回昂貴的功能.
謝謝.
編輯
>這是一些丑陋的東西;
>即使我用一些Lazy類包裝昂貴的函數,當我有兩個昂貴的函數時,我會怎么做? (如下所示).
class Lazy:
def __init__(self, func, *a, **ka):
self.func= func
self.a = a
self.ka= ka
def __str__(self):
return str(self.func(*self.a, **self.ka))
# Though this is ugly, it works
logger.debug('Message: %s', Lazy(expensive_func))
# What if I wanted to do this?
# logger.debug('Message: {}'.format(expf_1(expf_2(some_arg))))
# Maybe I can modify class Lazy to make something like this to work
# but it really doesn't feel right
# logger.debug('Message: {}', Lazy(expf_1, Lazy(expf_2, some_arg)))
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的python服务端开发调试日志系统_Python:如何进行延迟调试日志记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python自动抓取指定信息_使用pyt
- 下一篇: websocket python爬虫_p