![](/img/trans.png)
[英]Is it possible to log into multiple log files from a single module in python 3.0
[英]Log from multiple python files into single log file in Python
我有多個python文件,我需要從多個python文件登錄到一個公共日志文件。 我不想使用日志配置文件格式化或json字典。 每個python文件都被導入到一個主python文件kickstart.py中,它們都是從kickstart.py調用的。 我想將從master python腳本調用的各種python模塊中的所有消息記錄到單個日志文件中。 請建議使用方法。 我瀏覽了python cookbook,但這沒有用。我對此很新。
謝謝
您可以使用logging
模塊執行此操作。 在您的一個基本模塊中定義此功能,並在您想要記錄某些內容的每個模塊中調用它。
import logging
def get_logger(name):
log_format = '%(asctime)s %(name)8s %(levelname)5s %(message)s'
logging.basicConfig(level=logging.DEBUG,
format=log_format,
filename='dev.log',
filemode='w')
console = logging.StreamHandler()
console.setLevel(logging.DEBUG)
console.setFormatter(logging.Formatter(log_format))
logging.getLogger(name).addHandler(console)
return logging.getLogger(name)
然后,從要記錄的每個模塊中,使用所需的記錄器名稱調用此函數,並將所有模塊打印到filename
參數定義的同一日志文件中。
<base.py>
logger = get_logger('base')
logger.info('testing logger from module base')
<module2.py>
logger = get_logger('module2')
logger.info('testing logger from module module2')
<dev.log>
2017-08-11 00:34:00,361 base INFO testing logger from module base
2017-08-11 00:34:00,361 module2 INFO testing logger from module module2
@陳的答案是對的。 我提供的具體用例如下:
假設您有兩個要導入主文件master.py
python文件py1.py
, py2.py
。
#py1
import logging
def fun1():
LOGGER = logging.getLogger(__name__)
LOGGER.info('fun1 runs')
#py2
import logging
def fun2():
LOGGER = logging.getLogger(__name__)
LOGGER.info('fun2 runs')
#master.py
import py1
import py2
import logging
def main():
logging.basicConfig(filename='log.log',level=logging.INFO)
LOGGER = logging.getLogger("main")
py1.fun1()
py2.fun2()
LOGGER.info('Master runs')
if __name__ == "__main__":
main()
然后執行master.py
將生成一個包含來自所有模塊( py1.py
和py2.py
)的日志記錄的單個log.log
文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.