/etc/nova/nova.conf 에 보면 logdir=/var/log/nova 로 되어 있어서 해당 디렉토리에 서비스 모듈명의 이름으로 로그가 남는데 이는 프로세스별로 로그를 만드는 것이다.
만약 사용자 정의의 로그를 만들고 싶으면 다음과 같이 수정한다.
# vi /usr/lib/pymodules/python2.6/nova/log.py
def setup():
...
reset()
_ask_setup_log() // 추가
...
askLogger = logging.getLogger('nova.ask')
def _ask_setup_log():
if FLAGS.logdir:
logname = '%s.log' % (os.path.join(FLAGS.logdir, 'nova-ask'),)
global askLogger
askLogger = logging.getLogger('nova.ask')
askLogger.propagate = 0
askHandler = WatchedFileHandler(logname)
askHandler.setFormatter(_formatter)
askLogger.addHandler(askHandler)
# vi /usr/lib/pymodules/python2.6/nova/scheduler/chance.py
...
from nova import log as logging
...
logging.askLogger.debug('********* %s, %s *************', context, topic)
이와 같이 수정하면 /var/log/nova/nova-ask.log 가 생성되며 어떤 프로세스에서 호출하던지 해당 로그에 남게 되어 있다.
novaclient 모듈에서 로그를 추가하고 싶으면 다음과 같이 하면 된다.
# vi /usr/lib/pymodules/python2.6/novaclient/log.py
import logging
from logging.handlers import WatchedFileHandler
logger = logging.getLogger('nova.client')
logger.setLevel(logging.DEBUG)
fh = WatchedFileHandler('/var/log/nova/nova-client.log')
formatter = logging.Formatter('%(asctime)s %(levelname)s %(name)s [-] %(message)s from (pid=%(process)d) %(funcName)s %(pathname)s:%(lineno)d')
fh.setFormatter(formatter)
logger.addHandler(fh)
# vi /usr/lib/pymodules/python2.6/novaclient/shell.py
...
from log import logger
...
logger.debug('******* shell.py called !! ****************')