blob: 69c115596c74a0fba35e4b2538461a82f044ffe9 [file] [log] [blame]
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_OPTIONS(self, request):
request.setHeader('Access-Control-Allow-Origin', 'http://192.168.86.10')
request.setHeader('Access-Control-Allow-Methods', 'POST')
request.setHeader('Access-Control-Allow-Headers', 'x-prototype-version,x-requested-with,Content-Type')
request.setHeader('Access-Control-Max-Age', 2520) # 42 hours
return ''
def render_POST(self, request):
newdata = request.content.getvalue()
newdata = simplejson.loads(newdata)
request.setHeader('Access-Control-Allow-Origin', 'http://192.168.86.10')
request.setHeader('Access-Control-Allow-Methods', 'POST')
request.setHeader('Access-Control-Allow-Headers', 'x-prototype-version,x-requested-with,Content-Type')
request.setHeader('Access-Control-Max-Age', 2520) # 42 hours
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("counter", Counter())
root.putChild("send_log", Logger())
reactor.listenTCP(80, Site(root))
reactor.run()