On Jul 18, 5:12 pm, "Robert Rawlins"
<robert.rawl...@thinkbluemedia.co.ukwrote:
>
This is really quite frustrating as I'd much rather use a conf file than
work this programmatically. I get the feeling that it's because in the
config file I was not attaching any handlers to the root logger, but I don't
know.
There's no reason why not having a handler for the root logger would
cause any particular problem. For example, the following script:
#- start of logconftest.py ------------------
import logging, logging.config
logging.config.fileConfig("log.conf")
app_logger = logging.getLogger("application")
sa_logger = logging.getLogger("sqlalchemy")
loggers = [app_logger, sa_logger]
def func1():
raise Exception("Exception from func1")
def func2():
raise TypeError("TypeError from func2")
def func3():
raise ValueError("ValueError from func3")
funcs = [func1, func2, func3]
for x in range(10):
try:
f = funcs[x % 3]
f()
except Exception, e:
loggers[x % 2].exception("%d. Problem in %s", x, f.__name__)
#- end of logconftest.py --------------------
together with the following configuration file (almost the same as
yours):
;-- start of log.conf -----------------------
[loggers]
keys=root,application,sqlalchemy
[handlers]
keys=hand01,hand03
[formatters]
keys=form01
[logger_root]
level=DEBUG
handlers=
[logger_application]
level=DEBUG
handlers=hand01
qualname=application
[logger_sqlalchemy]
level=DEBUG
handlers=hand03
qualname=sqlalchemy
[handler_hand01]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=form01
args=('application.log', 'a', 800000, 5)
[handler_hand03]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=form01
args=('sqlalchemy.log', 'a', 800000, 5)
[formatter_form01]
format=%(asctime)s %(filename)s %(lineno)d %(levelname)-8s %(message)s
datefmt=
class=logging.Formatter
;-- end of log.conf -------------------------
gives the following output:
-- start of application.log -----------------
2008-07-20 14:47:05,608 logconftest.py 26 ERROR 0. Problem in func1
Traceback (most recent call last):
File "C:\Temp\logconftest.py", line 24, in <module>
f()
File "C:\Temp\logconftest.py", line 11, in func1
raise Exception("Exception from func1")
Exception: Exception from func1
2008-07-20 14:47:05,608 logconftest.py 26 ERROR 2. Problem in func3
Traceback (most recent call last):
File "C:\Temp\logconftest.py", line 24, in <module>
f()
File "C:\Temp\logconftest.py", line 17, in func3
raise ValueError("ValueError from func3")
ValueError: ValueError from func3
2008-07-20 14:47:05,608 logconftest.py 26 ERROR 4. Problem in func2
Traceback (most recent call last):
File "C:\Temp\logconftest.py", line 24, in <module>
f()
File "C:\Temp\logconftest.py", line 14, in func2
raise TypeError("TypeError from func2")
TypeError: TypeError from func2
2008-07-20 14:47:05,608 logconftest.py 26 ERROR 6. Problem in func1
Traceback (most recent call last):
File "C:\Temp\logconftest.py", line 24, in <module>
f()
File "C:\Temp\logconftest.py", line 11, in func1
raise Exception("Exception from func1")
Exception: Exception from func1
2008-07-20 14:47:05,608 logconftest.py 26 ERROR 8. Problem in func3
Traceback (most recent call last):
File "C:\Temp\logconftest.py", line 24, in <module>
f()
File "C:\Temp\logconftest.py", line 17, in func3
raise ValueError("ValueError from func3")
ValueError: ValueError from func3
-- end of application.log -------------------
-- start of sqlalchemy.log ------------------
2008-07-20 14:47:05,608 logconftest.py 26 ERROR 1. Problem in func2
Traceback (most recent call last):
File "C:\Temp\logconftest.py", line 24, in <module>
f()
File "C:\Temp\logconftest.py", line 14, in func2
raise TypeError("TypeError from func2")
TypeError: TypeError from func2
2008-07-20 14:47:05,608 logconftest.py 26 ERROR 3. Problem in func1
Traceback (most recent call last):
File "C:\Temp\logconftest.py", line 24, in <module>
f()
File "C:\Temp\logconftest.py", line 11, in func1
raise Exception("Exception from func1")
Exception: Exception from func1
2008-07-20 14:47:05,608 logconftest.py 26 ERROR 5. Problem in func3
Traceback (most recent call last):
File "C:\Temp\logconftest.py", line 24, in <module>
f()
File "C:\Temp\logconftest.py", line 17, in func3
raise ValueError("ValueError from func3")
ValueError: ValueError from func3
2008-07-20 14:47:05,608 logconftest.py 26 ERROR 7. Problem in func2
Traceback (most recent call last):
File "C:\Temp\logconftest.py", line 24, in <module>
f()
File "C:\Temp\logconftest.py", line 14, in func2
raise TypeError("TypeError from func2")
TypeError: TypeError from func2
2008-07-20 14:47:05,625 logconftest.py 26 ERROR 9. Problem in func1
Traceback (most recent call last):
File "C:\Temp\logconftest.py", line 24, in <module>
f()
File "C:\Temp\logconftest.py", line 11, in func1
raise Exception("Exception from func1")
Exception: Exception from func1
-- end of sqlalchemy.log --------------------
which is, from a quick scan, the expected result - all the expected
exceptions are thrown. Note the absence of any handlers on the root
logger.
Regards,
Vinay Sajip