Jason Friedman wrote: > I am logging to my Apache web server, using this Apache format: > > LogFormat "%{%Y-%m-%d %H:%M:%S}t %U %q" scriptlog > CustomLog /var/log/apache2/script.log scriptlog > > My code is as follows: > > #!/usr/bin/env python3 > import logging, logging.handlers, sys > logger = logging.getLogger('simple_example') > logger.setLevel(logging.DEBUG) > host = "localhost:9090" > url = "make_deployment_group" > http_handler = logging.handlers.HTTPHandler(host, url, method='GET') > http_formatter = logging.Formatter('%(name)s - %(levelname)8s - > %(message)s') http_handler.setFormatter(http_formatter) > logger.addHandler(http_handler) > logger.warn('warn message') > > which results in a entry at /var/log/apache2/script.log: > > 2012-01-14 05:22:52 > make_deployment_group?threadName=MainThread&name=simple_example&thread=139923654465280&created=1326518572.83&process=31122&processName=MainProcess&args=%28%29&module=my- logging&filename=my-logging.py&levelno=30&exc_text=None&pathname=my- logging.py&lineno=33&asctime=2012-01-14+05%3A22%3A52%2C825&msg=warn+message&exc_info=None&message=warn+message&funcName=%3Cmodule%3E&relativeCreated=20.0970172882&levelname=WARNING&msecs=825.411081314 > > All the information one could want, which is nice, but is there a way > to specify I want only certain information sent via the HTTP request?
>>> help(logging.handlers.HTTPHandler.mapLogRecord) Help on function mapLogRecord in module logging.handlers: mapLogRecord(self, record) Default implementation of mapping the log record into a dict that is sent as the CGI data. Overwrite in your class. Contributed by Franz Glasner. Applied to your example: import logging, logging.handlers, sys class HTTPHandler(logging.handlers.HTTPHandler): wanted = ["levelname", "msg", "yadda"] def mapLogRecord(self, record): return {name: getattr(record, name, "#missing") for name in self.wanted} logger = logging.getLogger('simple_example') logger.setLevel(logging.DEBUG) host = "localhost:9090" url = "make_deployment_group" http_handler = HTTPHandler(host, url, method='GET') http_formatter = logging.Formatter('%(name)s - %(levelname)8s - %(message)s') http_handler.setFormatter(http_formatter) logger.addHandler(http_handler) logger.warn('warn message') -- http://mail.python.org/mailman/listinfo/python-list