2011-11-24 54 views
1

我試圖做簡單的文件日誌記錄配置的金字塔,與Python 2.7.2和1.2.3金字塔問題與記錄設置的自舉金字塔

它不工作我沒有料到。它看起來像即使我引導到金字塔,它不會加載正確的日誌。下面test.py中的具體問題:

test.py

from pyramid.paster import bootstrap 
env = bootstrap('../test.ini') 

import logging 
logging.basicConfig() #this apparently makes no difference 
log=logging.getLogger('root') #same thing if I do getLogger(__name__) - it doesn't find the proj one. 
print log.handlers 
>>> [] 

這是奇怪!沒有處理程序?顯然這不是我想到的日誌。

print log 

>>> logging.Logger 

不應該是RootLogger嗎?

print log.parent 

>>> [<logging.RootLogger>] 

因此,getLogger('root')的父級是真正的RootLogger嗎?讓我們看看它的處理程序是什麼:

print log.parent.handlers 

>>> [<logging.StreamHandler>] 

這很奇怪。

test.ini:自舉時

[app:proj] 
use = egg:proj 
sqlalchemy.url = mysql+mysqldb://proj_staging:[email protected]/proj_staging?charset=utf8 
# This apparently helps avoid mysql gone away errors 
sqlalchemy.pool_recycle = 3600 

[pipeline:main] 
pipeline = proj 

[loggers] 
keys = root, proj 

[handlers] 
keys = console, file 

[formatters] 
keys = generic 

[logger_root] 
level = INFO 
handlers = file 
qualname=root 

[logger_proj] 
level = DEBUG 
handlers = 
qualname = proj 

[handler_console] 
class = StreamHandler 
args = (sys.stderr,) 
level = NOTSET 
formatter = generic 

[handler_file] 
class = FileHandler 
args=('../logs/proj.log','a') 
formatter = generic 
level = INFO 

[formatter_generic] 
format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s 

回答

9

金字塔不加載日誌配置。如果你想一個參數,它應該,請https://github.com/Pylons/pyramid/issues

開出罰單。無論如何,這是很簡單的自己加載日誌信息:

import logging 
import logging.config 
from pyramid.paster import bootstrap 
logging.config.fileConfig('../test.ini') 
env = bootstrap('../test.ini') 

log = logging.getLogger(__name__) 
log.debug('foo') 
+0

啊,這是偉大的。我剛纔認爲它會加載所有其他東西的日誌記錄。 – fastmultiplication