我正在尝试使用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,
)
上述类似记录器功能有多个实例。但我无法在指定的文件中收到记录器输出。代码和文件都很庞大。但是,代码生成的错误会在日志文件中打印出来。
答案 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')
调整日志消息格式。