我的python應用程序由主程序和幾個模塊組成。每個模塊包含全球一級的每個應用程序實例的獨立記錄器名稱
import logging
log = logging.getLogger('myapp.mymodule')
。處理程序和其他東西在主程序中初始化,並且通常將所有消息轉發給syslog。
現在我想啓動應用程序的多個實例(具有實例名稱的配置文件可以被指定爲命令行參數)。問題是:如何將實例名稱傳遞給每個導入的模塊?我希望記錄器名稱看起來像'myappinstance.mymodule'或'myapp.instance.module'。我不想在每個模塊中搞亂配置文件解析,因爲這需要硬編碼的配置路徑。
我不認爲它會解決你的問題。通過設置環境變量,可以將實例名稱傳遞給模塊。如果多個實例同時啓動會怎樣? – iamamac 2009-12-29 18:59:19
環境變量不是全局的(全局的),它們是沿着進程樹繼承的。我可以同時啓動兩個main.py實例,如果每個實例都設置特定的evnironment變量,它將只傳播給子進程。 – Max 2009-12-30 04:59:10