涉及.conf + main.py模块的日志记录错误

时间:2013-10-22 19:25:10

标签: python logging

我认为我错过了一些重要的东西,对于我的生活,我无法理解。我有一个logging.conf文件,我正在尝试使用我的主文件(例如,xyz.py)来阅读。但我得到了这个奇怪的错误。我在下面跟踪了配置文件 - logging.conf,然后是xyz.py中的相关部分。

File "xyz.py", line 28, in <module>
log = logging.config.fileConfig('/Users/Username/Desktop/logging.conf')
File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/config.py", line 78, in fileConfig
handlers = _install_handlers(cp, formatters)
File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/config.py", line 156, in _install_handlers
h = klass(*args)
TypeError: __init__() takes at most 7 arguments (23 given)

配置文件 - 完整路径= /Users/Username/Desktop/logging.config(我按照http://docs.python.org/release/2.5.2/lib/logging-config-fileformat.html的说明进行了操作)

[loggers]
keys=root

[handlers]
keys=handlersmtp, handlerfile

[formatters]
keys=formatter

[formatter_formatter]
format=%(asctime)s %(name)s %(levelname)s %(message)s
datefmt=
class=logging.Formatter

[logger_root]
level=NOTSET
handlers=handlersmtp, handlerfile

[handler_handlersmtp]
class=handlers.SMTPHandler
level= INFO
formatter=formatter
args=(('localhost', 25),'localhost@localhost.com', ['abc@bca.com'],
                        'The log')


[handler_handlerfile]
class=handlers.RotatingFileHandler
level= INFO
formatter=formatter
backupCount=1440
args=('alogger.log')

主文件中的部分 - xyz.py

import logging
import logging.config

log = logging.config.fileConfig('/Users/Username/Desktop/logging.config')

我查看了Python是logging / config.py模块,但无法理解它为何提出这个问题。这是一个非常大的文件。

编辑:

@ VineySajip的回答删除了上面的错误,但我现在正在处理这个新错误。

[handler_handlerfile]
class=handlers.RotatingFileHandler
level= INFO
formatter=formatter
args=('alogger.log', mode='a', maxBytes=25000, 
backupCount=0, encoding=None, delay=0) #New line to fit 
                  #this page but code has it all in 1 line

新的追溯:

Traceback (most recent call last):
  File "cpu6.py", line 29, in <module>
    log = logging.config.fileConfig('/Users/Username/Desktop/logging.ini')
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/
  Versions/2.7/lib/python2.7/logging/config.py", line 78, in fileConfig
    handlers = _install_handlers(cp, formatters)
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/
  Versions/2.7/lib/python2.7/logging/config.py", line 155, in _install_handlers
    args = eval(args, vars(logging))
  File "<string>", line 1
    ('alogger.log', mode='a', maxBytes=25000, 
    backupCount=0, encoding=None, delay=0)
                                     ^
  SyntaxError: invalid syntax

1 个答案:

答案 0 :(得分:2)

在您的配置中,('alogger.log')不是有效的参数元组,实际上整个部分看起来都是错误的。 RotatingFileHandler具有以下参数:

filename, mode='a', maxBytes=0, backupCount=0, encoding=None, delay=0

你需要指定一个反映这一点的参数元组。您尚未指定maxBytes值,因此永远不会发生翻转;和1440看起来像是要保留的奇数个备份日志文件。查看文档以确保您使用处理程序的__init__.py

的正确参数

更新:省略参数名称,如下所示:

args=('alogger.log', 'a', 25000, 0, None, 0)