我創建了一些Python文件,使我的函數有點分離以便於工作/修復。所有文件都在一個目錄中。該結構可能會分解成類似:使用多個模塊的python日誌記錄不起作用
- a.py(A類與基本的東西)
- b.py(B類基本的東西)
- modA.py(創建C類從A和B)
- modB.py導出(創建一個類d從A導出和B)
- ...
- main_a.py(使用C類)
- main_b.py(使用D類)
每個模塊都使用python的日誌記錄。爲什麼如此 - 只寫入根記錄器消息。我沒有看到我的錯誤。
這是一個簡單的例子。
a.py
import logging
logger = logging.getLogger(__name__)
class A(object):
def __init__(self):
logger.debug("Instance of A")
b.py
import logging
logger = logging.getLogger(__name__)
class B(object):
def __init__(self):
logger.debug("Instance of B")
ab.py
import a
import b
import logging
logger = logging.getLogger(__name__)
class AB(a.A, b.B):
def __init__(self):
logger.debug("Instance of AB")
a.A.__init__(self)
b.B.__init__(self)
main_one.py
import sys
import ab
import logging
import logging.handlers
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
handler = logging.StreamHandler(stream=sys.stderr)
handler.setLevel(logging.DEBUG)
handler.setFormatter(logging.Formatter('%(name)s: %(message)s'))
logger.addHandler(handler)
logger.warning("The trouble starts")
ab = ab.AB()
我也嘗試使用類似self.logger = logging.getLogger(type(self).__name__)
的東西來記錄每個類的基礎,但結果是一樣的。那麼當您閱讀python日誌手冊時,您可能會指出我出錯的地方嗎?
TIA。
編輯1:我的解決方案
由於兩者@falsetru和@Jakub M.,同時使用的答案會導致一個有效的解決方案。
首先我把所有東西放在一個層次結構中。
main_one.py
lib/
__init__.py
ab.py
basic/
__init__.py
a.py
b.py
其次,我在main_one.py
改變了logger = logging.getLogger(__name__)
到logger = logging.getLogger()
(沒有名稱爲根記錄!)。
這樣做。
非常有幫助的是代碼段on GitHub。
好了 - 這解決了一個工作基地問題,但還是帶來了一些問題。據我所見,我失去了可移植性? – daniel
@丹尼爾我不明白你的意思是'丟失可移植性'。 – falsetru
@daniel,https://github.com/search?l=Python&q=getLogger&type=Code – falsetru