相关疑难解决方法(0)

Python、tkinter 和导入的类:记录未捕获的异常

我正在编写一些想要与我的团队共享的脚本,因此我一直在构建一堆日志记录,以便在他们在某个地方遇到崩溃时更容易进行调试,从那时起我就可以看到到底发生了什么崩溃。

一般记录到文件没有问题,但我有一个未捕获的异常问题。我尝试了各种方法来使其正常工作,例如参见thisthis。当我从 IDLE 或命令提示符运行它时,似乎 sys.excepthook 没有被调用。

昨天,如果异常发生在主模块中,它会正确记录,但如果异常发生在导入的类中,则不会正确记录。现在异常根本不会被记录,我不知道我改变了什么(所以我今天安装了 Git :-P)

这是我试图开始工作的代码,即主模块:

import tkinter as tk
import sys
import traceback
import logging
import datetime

import exception_logging_test_imported_class as impclass

# Main Class
class ExceptMain(tk.Frame):
    def __init__(self, parent):
        logging.info('Start main')
        tk.Frame.__init__(self, parent, relief='groove', bd=4)
        self.parent = parent
        self.pack()
        tk.Label(self, text='This is the main class', bg='white').pack()
        tk.Button(self, text='Start subframe', command=self.run).pack()
        tk.Button(self, text='Throw main exception', command=self.throwex).pack()
        tk.Button(self, text='Start imported class', command=self.start_import).pack()

    # Function to start another frame, from this same file
    def …
Run Code Online (Sandbox Code Playgroud)

python logging exception tkinter

4
推荐指数
1
解决办法
516
查看次数

可以使用Pythons标准库完成结构化日志记录吗?

我最近阅读了有关结构化日志的信息(此处)。这个想法似乎不是通过将简单的字符串作为一行添加到日志文件中来进行记录,而是通过JSON对象进行记录。这样就可以通过自动工具分析日志文件。

Pythons logging库可以进行结构化日志记录吗?如果不是,是否有“主流”解决方案(例如numpy / scipy是科学计算的主流解决方案)?我找到了structlog,但是我不确定它的普及程度。

python logging structured-logging

4
推荐指数
3
解决办法
1356
查看次数

如何重定向python运行时错误?

我正在使用python编写一个守护进程服务器,有时会出现python运行时错误,例如某些变量类型不正确.该错误不会导致进程退出.

我可以将这样的运行时错误重定向到日志文件吗?

python error-logging

3
推荐指数
1
解决办法
1985
查看次数

Python:向控制台和日志文件显示和记录运行时错误

下面的脚本是将所有错误写入日志文件和控制台,除了引发的异常,它只写在控制台而不是日志上.如何让它将引发的异常写入日志,或任何运行时异常?谢谢.

import os
import sys
import logging
import logging.config

class Main(object):

    @staticmethod
    def main():
    logging.config.fileConfig("logging.conf")
    logging.debug("1")
    logging.info("2")
    logging.warn("3")
    logging.error("4")
    logging.critical("5")
    raise Exception("test")

if __name__ == "__main__":
    Main.main()


import logging
import logging.config

logging.config.fileConfig('logging.conf')

# create logger
logger = logging.getLogger('simpleExample')

# 'application' code
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')
raise Exception("Exception raised")
Run Code Online (Sandbox Code Playgroud)

配置文件:

[loggers]
keys=root,simpleExample

[handlers]
keys=consoleHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=DEBUG
handlers=consoleHandler

[logger_simpleExample]
level=DEBUG
handlers=consoleHandler
qualname=simpleExample
propagate=0

[handler_fileHandler]
formatter=simpleFormatter
args=('error.log')

[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)

[formatter_simpleFormatter]
format=%(asctime)s - …
Run Code Online (Sandbox Code Playgroud)

python logging exception

2
推荐指数
1
解决办法
6645
查看次数