| from twisted.web.server import Site |
| from twisted.web.static import File |
| from twisted.internet import reactor |
| from twisted.web.resource import Resource |
| |
| import logging |
| from logging import config |
| import logging.handlers |
| |
| import simplejson |
| |
| # logging configuration |
| |
| LOG_SETTINGS = { |
| 'version': 1, |
| 'handlers': { |
| 'file1': { |
| 'class': 'logging.handlers.RotatingFileHandler', |
| 'level': 'INFO', |
| 'formatter': 'xdata', |
| 'filename': '/var/log/xdata/xdata.log', |
| 'mode': 'a', |
| 'maxBytes': 100e6, |
| 'backupCount': 10, |
| }, |
| 'file2': { |
| 'class': 'logging.handlers.RotatingFileHandler', |
| 'level': 'INFO', |
| 'formatter': 'detailed', |
| 'filename': '/var/log/xdata/xdata-error.log', |
| 'mode': 'a', |
| 'maxBytes': 100e6, |
| 'backupCount': 10, |
| }, |
| }, |
| 'formatters': { |
| 'xdata': { |
| 'format': '%(message)s', |
| }, |
| 'detailed': { |
| 'format': '%(asctime)s %(module)-17s line:%(lineno)-4d ' \ |
| '%(levelname)-8s %(message)s', |
| }, |
| 'email': { |
| 'format': 'Timestamp: %(asctime)s\nModule: %(module)s\n' \ |
| 'Line: %(lineno)d\nMessage: %(message)s', |
| }, |
| }, |
| 'loggers': { |
| 'xdata': { |
| 'level':'DEBUG', |
| 'handlers': ['file1',] |
| }, |
| 'error': { |
| 'level':'DEBUG', |
| 'handlers': ['file2',] |
| }, |
| } |
| } |
| |
| config.dictConfig(LOG_SETTINGS) |
| |
| logger = logging.getLogger('xdata') |
| logger_err = logging.getLogger('error') |
| |
| kibana = File('/home/vagrant/kibana-3.1.2') |
| test = File('/vagrant/test') |
| |
| wf_dict = { |
| 0: "WF_OTHER", |
| 1: "WF_DEFINE", |
| 2: "WF_GETDATA", |
| 3: "WF_EXPLORE", |
| 4: "WF_CREATE", |
| 5: "WF_ENRICH", |
| 6: "WF_TRANSFORM" |
| } |
| |
| class Counter(Resource): |
| isLeaf = True |
| numberRequests = 0 |
| |
| def render_GET(self, request): |
| self.numberRequests += 1 |
| request.setHeader("content-type", "text/plain") |
| return "I am request #" + str(self.numberRequests) + "\n" |
| |
| class Logger(Resource): |
| def render_POST(self, request): |
| newdata = request.content.getvalue() |
| newdata = simplejson.loads(newdata) |
| try: |
| for a in newdata: |
| if 'wf_state' in a['parms']: |
| a['wf_state_longname'] = wf_dict[a['parms']['wf_state']] |
| |
| logger.info(simplejson.dumps(a)) |
| except: |
| logger_err.error('logging error') |
| |
| return '' |
| |
| root = Resource() |
| root.putChild("kibana", kibana) |
| root.putChild("test", test) |
| |
| root.putChild("counter", Counter()) |
| root.putChild("send_log", Logger()) |
| |
| reactor.listenTCP(9000, Site(root)) |
| reactor.run() |