所以我有一个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