簡體   English   中英

python 包和日志記錄最佳實踐

[英]python packages and logging best practices

我正在構建一個 Python pip package 我想知道關於設置記錄器的最佳實踐是什么。

目前,我在文件系統上的項目樹結構大致如下所示:

  root
   |
   |
   |- my_proj/
   |      |
   |      |- sub_one/
   |      |- sub_two/
   |      |
   |    __init__.py
   |    app.py
   |
   |
 setup.py

我正在__init__.py中設置我的記錄器,如下所示

# contents of __init__.py 

logger = logging.getLogger(__name__)
logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s:%(levelname)s:%(message)s"
)

然后,每當我想記錄一些東西時,我都有一段類似於這樣的代碼:

import logging
logger = logging.getLogger(__name__)

def add_two(x):
   logger.info('Increasing by 2')
   return x + 2

你認為這種方式有什么問題嗎? (忽略我在下面描述的內容,假設我沒有做 package...)

由於我正在構建一個 pip package,當作為庫導入時,我的 package(我認為)將接管記錄設備更改格式等,這不是標准做法,也是不可取的。 如果我理解得很好,調用代碼應該注冊/設置一個記錄器,類似於:

pip install my_proj

import my_proj
my_proj.register_logger()

我不太明白這是怎么做到的。 順便問一下,這是好習慣嗎? 有沒有人有任何例子。 在我的代碼中,如果調用代碼注冊了記錄器,我應該如何調用記錄器以便打印消息。

文檔中描述了登錄庫的最佳實踐。 跟着那個就行了。 如果要測試庫的日志記錄,可以在測試代碼中配置日志記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM