所以我有一個python應用程序被捆綁到一個.app使用py2app。我在那裏有一些調試打印語句,如果我在終端中運行代碼,通常會打印到標準輸出。如果我打開捆綁的.app,顯然我沒有看到任何這種輸出。即使我沒有看到它,是否有任何這個實際打印的地方?從終端不運行應用程序時,「打印」到哪裏?
2
A
回答
3
它到標準輸出(所以在命令行,如果你是在命令行,或如打開它。到日誌中,如果您正在使用cron作業運行它)。
對於更先進,更靈活的使用嘗試使用內置的日誌支持(logging
module)。它允許您將消息定向到控制檯,文件,流(如外部日誌記錄服務器),進程,電子郵件等,以及基於日誌消息級別的過濾器。調試語句(日誌語句)然後可以放置在生產代碼中,但配置爲不會導致除錯誤以外的任何日誌記錄。非常有用並簡化了很多日誌記錄。
0
我想你可能想看一看命名模塊logging
可以比使用此模塊安裝到您自己的日誌記錄到一個單獨的文件,例如,這就是我如何做到這一點:
import logging
# Create a log file for the future debug
LOG_FILE_NAME = 'my-script.log'
log_path = path = os.path.join(os.path.expanduser('~'), '/mnt/logs/')
if not os.path.exists(log_path):
os.makedirs(log_path)
logger = logging.getLogger('my-script')
logger.setLevel(logging.DEBUG)
file_handler = logging.FileHandler(log_path+LOG_FILE_NAME)
file_handler.setLevel(logging.DEBUG)
file_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s -%(message)s')
file_handler.setFormatter(file_formatter)
logger.addHandler(file_handler)
class Foo()
def log(self, msg, level=None):
print "LOG %s" % msg
if level is not None:
if level == 'INFO':
logger.info(msg)
elif level == 'WARNING':
logger.warn(msg)
elif level == 'ERROR':
logger.error(msg)
elif level == 'CRITICAL':
logger.critical(msg)
else:
logger.debug(msg) # DEBUG
self.log('Some text here', 'DEBUG') # I use self.log instead of print
2
stdout和stderr流重定向到哪裏取決於您如何運行應用程序以及您在哪個OSX版本上。
當運行從終端(「MyApp.app/Contents/MacOS/MyApp」)的應用程序的輸出在終端窗口結束。
當運行通過雙擊,或者使用開放(1)命令的應用中,輸出使用OSX當Console.app結束之前10.8並被丟棄在OSX 10.8。
我有一個重定向輸出到Console.app甚至OSX 10.8讀取日誌補丁,但不是在發佈的版本在這個時間點。
P.S.我是py2app的維護者。
相關問題
- 1. 程序沒有響應從終端發送不連續打印的終端
- 2. 從網絡應用程序打印到客戶端打印機
- 3. 從bash腳本運行Python GUI應用程序時保持終端打開
- 4. 從chrome應用程序打印到並行端口連接的打印機?
- 5. 運行應用程序命令打開終端
- 6. 應用程序從哪裏運行的可執行目錄?
- 7. C程序,沒有在終端打印
- 8. C程序/忠告打印在終端
- 9. 如何從終端運行clojure程序
- 10. 從終端運行Python程序
- 11. 從python運行終端程序
- 12. 如何從終端運行Java程序?
- 13. 從終端運行java程序
- 14. 找出程序從哪裏運行?
- 15. Android從終端終止應用程序
- 16. 運行ASP.NET MVC應用程序時,端口號http:// localhost:52432 /指定在哪裏?
- 17. 從終端運行內格里斯包
- 18. Sass:打印到終端
- 19. python println在終端中運行時在哪裏
- 20. 通過終端服務打印在vb6應用程序
- 21. 從GUI應用程序運行終端命令?
- 22. Mac應用程序崩潰從發現者,但運行終端
- 23. 如何運行從終端處理應用程序
- 24. 運行終端程序時阻止終端輸入
- 25. 不能運行從終端
- 26. 打印到文件而不是終端
- 27. 運行不帶終端的erlang應用程序依賴於
- 28. 如何從終端打印一行代碼的打印機?
- 29. 「App Bundle」在哪裏查找我的媒體文件夾?從Qt Creator運行應用程序時發現的文件夾,使用終端時「找不到文件」
- 30. 打印日誌到終端運行工匠服務
你或許應該使用Python的'logging'模塊開始的,但你有沒有試過在尋找Console.app? – geoffspear
是的,我認爲它可能在那裏,但我沒有看到它。記錄模塊是否使它顯示在console.app中? – vik