![](/img/trans.png)
[英]How can I set up global for every imported file in Python automatically?
[英]How can a global logging object be set up in an imported Python module?
我想在由許多小腳本導入的Python模塊中創建全局日志記錄對象。 Python模塊旨在為所有腳本提供一致的設置,例如日志記錄,徽標,計時等。 我試圖在此模塊中設置日志記錄,以便輕松地一次更改所有這些腳本的日志記錄特征。
Python模塊的相關部分如下:
if engageLog:
global log
log = logging.getLogger(__name__)
logging.root.addHandler(technicolor.ColorisingStreamHandler())
我如何編寫此代碼,以便在腳本中可以使用日志記錄對象, 而無需在導入模塊之外進行任何設置 ?
在以下示例腳本中,該模塊稱為propyte
:
#!/usr/bin/env python
"""
################################################################################
# #
# script-1 #
# #
################################################################################
Usage:
script-1 [options]
Options:
-h, --help display help message
--version display version and exit
-v, --verbose verbose logging
-u, --username=USERNAME username
--data=FILENAME input data file [default: data.txt]
"""
name = "script-1"
version = "2015-10-21T1331Z"
import os
import sys
import time
import docopt
import propyte
def main(options):
global program
program = propyte.Program(options = options)
# access options and arguments
input_data_filename = options["--data"]
log.info("")
log.info("input data file: {filename}".format(
filename = input_data_filename
))
print("")
program.terminate()
if __name__ == "__main__":
options = docopt.docopt(__doc__)
if options["--version"]:
print(version)
exit()
main(options)
只需在模塊上使用log
屬性:
import propyte
propyte.log # the global log object in the propyte module
但是請注意, logging
模塊配置已經是全局的。 您可以使用logging.getLogger('somename')
,它將返回與該名稱關聯的單例記錄器對象。 當您在另一個模塊中檢索同一記錄器時,仍將存在應用於該對象的配置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.