I ended-up embedding my code into web2py instead of injecting it - it's simpler this way (for me) - it looks like this:
*In logging.conf:* [loggers] keys=root,rocket,markdown,web2py,rewrite,app,welcome,*logstash* [handlers] keys=consoleHandler,rotatingFileHandler,*logstash* ... *[logger_logstash] level=DEBUG handlers=logstash qualname=logstash propagate=0 * ... *[handler_logstash] class=handlers.TimedRotatingFileHandler level=DEBUG args=("<my_log_file>", "midnight")* *In gluon.main.py:* # set up logging for subsequent imports import logging import logging.config logpath = abspath("logging.conf") if os.path.exists(logpath): logging.config.fileConfig(abspath("logging.conf")) else: logging.basicConfig() logger = logging.getLogger("web2py") import gluon.contrib.logstash as logstash import logstash_formatter logstash_logger = logging.getLogger('logstash') logstash_logger.handlers[0].setFormatter(logstash_formatter. LogstashFormatter()) from restricted import RestrictedError from http import HTTP, redirect from globals import Request, Response, Session from compileapp import build_environment, run_models_in, \ run_controller_in, run_view_in from fileutils import copystream from contenttype import contenttype from sql import BaseAdapter from settings import global_settings from validators import CRYPT from cache import Cache from html import URL as Url from storage import List import newcron import rewrite ... def serve_controller(request, response, session): ... # also, make sure the flash is passed through # ################################################## # process models, controller and view (if required) # ################################################## run_models_in(environment) response._view_environment = copy.copy(environment) page = run_controller_in(request.controller, request.function,environment ) if isinstance(page, dict): response._vars = page for key in page: response._view_environment[key] = page[key] run_view_in(response._view_environment) page = response.body.getvalue() logstash.log(request, response, session, logstash_logger) raise HTTP(response.status, page, **response.headers) *In gluon.contrib.logstash.py:* import simplejson def getBody(obj): body = None try: body = obj.getvalue() except: try: body = obj.read() except: pass return body def log(request, response, session, logger): user = '' sessionDict = dict(session) if sessionDict.has_key('auth') and sessionDict['auth']: authDict = dict(sessionDict['auth']) if authDict.has_key('user') and authDict['user']: userDict = dict(authDict['user']) if userDict.has_key('first_name') and userDict.has_key( 'last_name'): user = userDict['first_name'] + ' ' + userDict['last_name'] message = { '@user': user, '@controller': request.controller, '@function': request.function, '@args': request.args, '@vars': dict(request.vars), '@requestBody': getBody(request.body), '@responseBody': getBody(response.body) } logMessage = simplejson.dumps(message) logger.debug(logMessage) Any suggestions? -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.