【问题标题】:Python 2.4.3: ConfigParser.NoSectionError: No section: 'formatters'Python 2.4.3:ConfigParser.NoSectionError:无节:“格式化程序”
【发布时间】:2011-10-27 21:25:28
【问题描述】:

尝试使用日志配置文件来实现TimedRotatinigFileHandler

只是因为某种原因不接受配置文件。

任何建议表示赞赏。


x.py:

import logging
import logging.config
import logging.handlers

logging.config.fileConfig("x.ini")

MyLog = logging.getLogger('x')

MyLog.debug('Starting') 

x.ini:

[loggers]
keys=root

[logger_root]
level=NOTSET
handlers=trfhand

[handlers]
keys=trfhand

[handler_trfhand]
class=handlers.TimedRotatingFileHandler
when=M
interval=1
backupCount=11
formatter=generic
level=DEBUG
args=('/var/log/x.log',)

[formatters]
keys=generic

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

Traceback (most recent call last):
  File "x.py", line 5, in ?
    logging.config.fileConfig("x.ini")
  File "/usr/lib/python2.4/logging/config.py", line 76, in fileConfig
    flist = cp.get("formatters", "keys")
  File "/usr/lib/python2.4/ConfigParser.py", line 511, in get
    raise NoSectionError(section)
ConfigParser.NoSectionError: No section: 'formatters'

谢谢

【问题讨论】:

  • 解决了什么问题?

标签: python logging config configparser


【解决方案1】:

错误信息非常准确,但具有误导性。

“格式化程序”部分丢失的原因是日志记录模块找不到您传递给logging.config.fileConfig 的文件。

尝试使用绝对文件路径。

【讨论】:

  • 非常感谢!异常消息不是很有帮助。创建一个名为 logging.ini 的文件可以解决问题。
【解决方案2】:

是的,@ekhumoro 是对的。 似乎logging 需要一个绝对路径。 Python 团队应该将此错误消息更改为更易读的内容;它只是看不到我的文件,不是因为配置文件本身错误。

我设法通过在配置文件中定义 BASE_DIR 变量并将其作为路径前缀导入来解决这个问题,就像 Django 所做的那样。并且,如果未创建日志文件的父目录,请记住创建它们。

我在config.py中定义了路径和记录器:

import os
BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

import logging
import logging.config
logging.config.fileConfig(os.path.join(BASE_DIR, 'utils', 'logger.conf')) # the `logger.conf` locates under 'myproject/utils/'
logger = logging.getLogger("mylog") # 'mylog' should exist in `logger.conf` in the logger part

在其他模块中:

from config import logger
...

logger.info("Your loggings modules should work now!! - WesternGun")

【讨论】:

    猜你喜欢
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-02
    • 1970-01-01
    相关资源
    最近更新 更多