読者です 読者をやめる 読者になる 読者になる

Django1.3ではloggingの設定が加わった

Django

Django1.3のalpha版が公開されて、変更点をつらつらと眺めているが、一番気に入っているのはsettings.pyにloggingの設定をかけるようになったところ。

settings.pyに、

LOGGING = {                                                                 
    'version': 1,                                                           
    'disable_existing_loggers': False,                                      
    'handlers': {                                                           
        'mail_admins': {                                                    
            'level': 'ERROR',                                               
            'class': 'django.utils.log.AdminEmailHandler'                   
            },                                                              
        'console': {                                                        
            'level': 'DEBUG',                                               
            'class': logging.StreamHandler',                         
            },                                                              
    },                                                                      
    'loggers': {                                                            
        'django.request':{                                                  
            'handlers': ['mail_admins'],                                    
            'level': 'ERROR',                                               
            'propagate': True,                                              
            },                                                              
        'app': {                                                            
            'handlers': ['console'],                                        
            'level': 'DEBUG',                                               
            'propagate': True,                                              
            },                                                              
    }                                                                       
}                                                                           

のようなloggingの設定を書き、アプリケーションの中では、

import logging                                                              
                                                                            
from django.shortcuts import *                                              
from django.template import RequestContext                                  
                                                                            
logger = logging.getLogger('app')                                           
                                                                            
def index(req):                                                             
    logger.debug('Hello, Django 1.3')                                                         
    ctxt = RequestContext(req)                                              
    return render_to_response("index.html", ctxt)                                

のように使うだけでよい。標準loggingモジュールの力を100%利用できて、それでいてシンプル。今までも同じことは少しの労力でできたかもしれないけど、なぜDjangoフレームワーク自身の標準的なやり方を示さなかったんだろうって感じの方が強いな。

標準loggingモジュールを使っているので、django-debug-toolbarとの組み合わせもいい感じ。*1

*1:余談になるがdjango-debug-toolbarもDjangoの標準に含まれているべきモジュールだ。