日志不在python中的文件中打印

时间:2018-01-29 12:48:42

标签: python python-3.x logging

我正在尝试使用python中的logger模块打印日志。 以下是我保留在文件顶部的代码。

protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK)
{
    Uri imageUri = data.getData();
    Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);
}
}

有不同的文件,彼此之间有函数调用。我使用以下行在记录器中显示一行。

if __name__ == '__main__':
    LOG_FILENAME = '/home/akash/exdion-pdf-extracter/doc/epod.log'
    logging.basicConfig(
        filename=LOG_FILENAME,
        level=logging.DEBUG,
        )

上述类似记录器功能有多个实例。但我无法在指定的文件中收到记录器输出。代码和文件都很庞大。但是,代码生成的错误会在日志文件中打印出来。

2 个答案:

答案 0 :(得分:1)

使用main命名空间下面的代码位。这样,您将定义记录器并将日志文件创建为全局文件,并且可以在代码中的任何位置调用记录器。下面的记录器代码位是我通常编码的方式。

logfile = '<your_file_name>.log'
if(os.path.isfile(logfile)):
        os.remove(logfile)

file_handler = logging.FileHandler(logfile)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(logging.Formatter(
        '%(asctime)s %(pathname)s [%(process)d]: %(levelname)s:: %(message)s'))

logger = logging.getLogger('wbs-server-log')
logger.setLevel(logging.DEBUG)
logger.addHandler(file_handler)

答案 1 :(得分:0)

问题可能是您必须在Components块之上初始化日志记录。这样,当您将其作为模块导入时,将初始化日志记录。

初始化日志记录的建议:

if __name__ == '__main__'

在此之后,您可以使用import logging log = logging.getLogger(PACKAGE_NAME) stream_handler = logging.StreamHandler(stream=open(LOG_FILE_NAME, 'a')) stream_handler.setLevel(logging.DEBUG) log.addHandler(stream_handler) log.debug('your message here') 调整日志消息格式。