Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django视图中的python日志记录导致TypeError_Python_Django_Logging - Fatal编程技术网

django视图中的python日志记录导致TypeError

django视图中的python日志记录导致TypeError,python,django,logging,Python,Django,Logging,我将日志设置如下 import logging logging.basicConfig( level = logging.DEBUG, format = '%(asctime)s %(levelname)s %(message)s', ) logger = logging.getLogger('myapp.views') def my_view(request): ... try: parse_file_using_regex(file):

我将日志设置如下

import logging

logging.basicConfig(
    level = logging.DEBUG,
    format = '%(asctime)s %(levelname)s %(message)s',
)

logger = logging.getLogger('myapp.views')

def my_view(request):
    ...
    try:
        parse_file_using_regex(file):
        ...
    except IndexError as ie:
        logger.debug('content of file not proper:',ie)
    except ValueError as ve:
        logger.debug('caused value error')
当ValueError出现时,我得到以下输出

...Traceback (most recent call last):
  File "/usr/lib/python2.6/logging/__init__.py", line 768, in emit
    msg = self.format(record)
  File "/usr/lib/python2.6/logging/__init__.py", line 648, in format
    return fmt.format(record)
  File "/usr/lib/python2.6/logging/__init__.py", line 436, in format
    record.message = record.getMessage()
  File "/usr/lib/python2.6/logging/__init__.py", line 306, in getMessage
    msg = msg % self.args
TypeError: not all arguments converted during string formatting
....Traceback (most recent call last):
  File "/usr/lib/python2.6/logging/__init__.py", line 768, in emit
    msg = self.format(record)
  File "/usr/lib/python2.6/logging/__init__.py", line 648, in format
    return fmt.format(record)
  File "/usr/lib/python2.6/logging/__init__.py", line 436, in format
    record.message = record.getMessage()
  File "/usr/lib/python2.6/logging/__init__.py", line 306, in getMessage
    msg = msg % self.args
TypeError: not all arguments converted during string formatting
2012-06-21 09:13:47,909 DEBUG caused value error
有人能帮我弄清楚吗?为什么会出现打字错误

使用pdb,并在python2.6/logging/init的
getMessage(self)
中包含以下内容

import pdb
pdb.set_trace()
print msg,sef.args

...> /usr/lib/python2.6/logging/__init__.py(307)getMessage()
-> print msg,sef.args
(Pdb) msg
'parsing subtitle file:'
(Pdb) self.args
('/home/me/dev/python/django/myapp/media/testpath/testfile.srt',)
(Pdb) 

您应该在日志消息中添加%s值,因此如下所示:

logger.debug('content of file not propper: %s', ie)
logger.debug('content of file not propper: %s' % ie)
我也以不同的方式使用了记录器,只是直接添加消息,如下所示:

logger.debug('content of file not propper: %s', ie)
logger.debug('content of file not propper: %s' % ie)
在我看来,这更直接


关于pdb,这是调试程序的一种非常好的方法,我建议100%:)

您可以打印msg和self.args值吗?只需转到“/usr/lib/python2.6/logging/_init__uuu.py”文件,在第305行中写入“import pdb;pdb.set_trace();print msg,self.args”,然后再次运行它。我已经用上述结果更新了问题