1
0
mirror of https://github.com/scrapy/scrapy.git synced 2025-02-25 01:43:50 +00:00

fixed bug when using log.start() with log level module constants instead of string names, and added regression tests

This commit is contained in:
Pablo Hoffman 2009-10-31 14:36:38 -02:00
parent b41c5b5d5b
commit d5ae94df55
2 changed files with 29 additions and 3 deletions

View File

@ -34,15 +34,24 @@ log_level = DEBUG
started = False
def _get_log_level(level_name_or_id=None):
if level_name_or_id is None:
lvlname = settings['LOG_LEVEL'] or settings['LOGLEVEL']
return globals()[lvlname]
elif isinstance(level_name_or_id, int) and 0 <= level_name_or_id <= 5:
return level_name_or_id
elif isinstance(level_name_or_id, basestring):
return globals()[level_name_or_id]
else:
raise ValueError("Unknown log level: %r" % level_name_or_id)
def start(logfile=None, loglevel=None, logstdout=None):
"""Initialize and start logging facility"""
global log_level, started
# set loglevel
loglevel = loglevel or settings['LOG_LEVEL'] or settings['LOGLEVEL']
log_level = globals()[loglevel] if loglevel else DEBUG
if started or not settings.getbool('LOG_ENABLED'):
return
log_level = _get_log_level(loglevel)
started = True
# set log observer

17
scrapy/tests/test_log.py Normal file
View File

@ -0,0 +1,17 @@
import unittest
from scrapy import log
from scrapy.conf import settings
class ItemTest(unittest.TestCase):
def test_get_log_level(self):
default_log_level = getattr(log, settings['LOG_LEVEL'])
self.assertEqual(log._get_log_level(), default_log_level)
self.assertEqual(log._get_log_level('WARNING'), log.WARNING)
self.assertEqual(log._get_log_level(log.WARNING), log.WARNING)
self.assertRaises(ValueError, log._get_log_level, 99999)
self.assertRaises(ValueError, log._get_log_level, object())
if __name__ == "__main__":
unittest.main()