mirror of
https://github.com/scrapy/scrapy.git
synced 2025-02-25 05:04:03 +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:
parent
b41c5b5d5b
commit
d5ae94df55
@ -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
17
scrapy/tests/test_log.py
Normal 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()
|
Loading…
x
Reference in New Issue
Block a user