remove `Debug = True when run Flask and add logger 99/21799/12
authordongwenjuan <dong.wenjuan@zte.com.cn>
Tue, 20 Sep 2016 09:56:28 +0000 (17:56 +0800)
committerdongwenjuan <dong.wenjuan@zte.com.cn>
Thu, 1 Dec 2016 04:03:43 +0000 (12:03 +0800)
JIRA: DOCTOR-79

Change-Id: I9193ec387af3b593b8f19d8f4b72ddec5c759bc0
Signed-off-by: dongwenjuan <dong.wenjuan@zte.com.cn>
tests/consumer.py
tests/inspector.py
tests/logger.py [new file with mode: 0644]
tests/monitor.py
tests/run.sh

index 9b3230f..3c012b4 100644 (file)
@@ -11,17 +11,20 @@ import argparse
 from flask import Flask
 from flask import request
 import json
+import logger as doctor_log
 import os
 import time
 
+LOG = doctor_log.Logger('doctor_consumer').getLogger()
+
 
 app = Flask(__name__)
 
 
 @app.route('/failure', methods=['POST'])
 def event_posted():
-    app.logger.debug('doctor consumer notified at %s' % time.time())
-    app.logger.debug('received data = %s' % request.data)
+    LOG.info('doctor consumer notified at %s' % time.time())
+    LOG.info('received data = %s' % request.data)
     d = json.loads(request.data)
     return "OK"
 
@@ -35,7 +38,7 @@ def get_args():
 
 def main():
     args = get_args()
-    app.run(host="0.0.0.0", port=args.port, debug=True)
+    app.run(host="0.0.0.0", port=args.port)
 
 
 if __name__ == '__main__':
index 6261415..129a386 100644 (file)
@@ -12,6 +12,7 @@ import collections
 from flask import Flask
 from flask import request
 import json
+import logger as doctor_log
 import os
 import time
 
@@ -19,6 +20,8 @@ import novaclient.client as novaclient
 
 import nova_force_down
 
+LOG = doctor_log.Logger('doctor_inspector').getLogger()
+
 
 class DoctorInspectorSample(object):
 
@@ -44,9 +47,9 @@ class DoctorInspectorSample(object):
             try:
                 host=server.__dict__.get('OS-EXT-SRV-ATTR:host')
                 self.servers[host].append(server)
-                app.logger.debug('get hostname=%s from server=%s' % (host, server))
+                LOG.debug('get hostname=%s from server=%s' % (host, server))
             except Exception as e:
-                app.logger.debug('can not get hostname from server=%s' % server)
+                LOG.error('can not get hostname from server=%s' % server)
 
     def disable_compute_host(self, hostname):
         for server in self.servers[hostname]:
@@ -63,15 +66,14 @@ class DoctorInspectorSample(object):
 
 
 app = Flask(__name__)
-app.debug = True
 inspector = DoctorInspectorSample()
 
 
 @app.route('/events', methods=['POST'])
 def event_posted():
-    app.logger.debug('event posted at %s' % time.time())
-    app.logger.debug('inspector = %s' % inspector)
-    app.logger.debug('received data = %s' % request.data)
+    LOG.info('event posted at %s' % time.time())
+    LOG.info('inspector = %s' % inspector)
+    LOG.info('received data = %s' % request.data)
     d = json.loads(request.data)
     hostname = d['hostname']
     event_type = d['type']
@@ -91,5 +93,6 @@ def main():
     args = get_args()
     app.run(port=args.port)
 
+
 if __name__ == '__main__':
     main()
diff --git a/tests/logger.py b/tests/logger.py
new file mode 100644 (file)
index 0000000..a4f3323
--- /dev/null
@@ -0,0 +1,47 @@
+##############################################################################
+# Copyright (c) 2016 ZTE Corporation and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+# Usage:
+#  import doctor_logger
+#  logger = doctor_logger.Logger("script_name").getLogger()
+#  logger.info("message to be shown with - INFO - ")
+#  logger.debug("message to be shown with - DEBUG -")
+
+import logging
+import os
+
+
+class Logger:
+    def __init__(self, logger_name):
+
+        CI_DEBUG = os.getenv('CI_DEBUG')
+
+        self.logger = logging.getLogger(logger_name)
+        self.logger.propagate = 0
+        self.logger.setLevel(logging.DEBUG)
+
+        formatter = logging.Formatter('%(asctime)s %(filename)s %(lineno)d '
+                                      '%(levelname)-6s %(message)s')
+
+        ch = logging.StreamHandler()
+        ch.setFormatter(formatter)
+        if CI_DEBUG is not None and CI_DEBUG.lower() == "true":
+            ch.setLevel(logging.DEBUG)
+        else:
+            ch.setLevel(logging.INFO)
+        self.logger.addHandler(ch)
+
+        file_handler = logging.FileHandler('%s.log' % logger_name)
+        file_handler.setFormatter(formatter)
+        file_handler.setLevel(logging.DEBUG)
+        self.logger.addHandler(file_handler)
+
+
+    def getLogger(self):
+        return self.logger
+
index caf4c32..26c911d 100644 (file)
@@ -10,6 +10,7 @@
 import argparse
 from datetime import datetime
 import json
+import logger as doctor_log
 import os
 import requests
 import socket
@@ -26,6 +27,8 @@ ICMP_ECHO_MESSAGE = '\x08\x00\xf7\xff\x00\x00\x00\x00'
 
 SUPPORTED_INSPECTOR_TYPES = ['sample', 'congress']
 
+LOG = doctor_log.Logger('doctor_monitor').getLogger()
+
 class DoctorMonitorSample(object):
 
     interval = 0.1  # second
@@ -58,8 +61,8 @@ class DoctorMonitorSample(object):
                                   (congress_endpoint, doctor_ds['id']))
 
     def start_loop(self):
-        print "start ping to host %(h)s (ip=%(i)s)" % {'h': self.hostname,
-                                                       'i': self.ip_addr}
+        LOG.debug("start ping to host %(h)s (ip=%(i)s)" % {'h': self.hostname,
+                                                       'i': self.ip_addr})
         sock = socket.socket(socket.AF_INET, socket.SOCK_RAW,
                              socket.IPPROTO_ICMP)
         sock.settimeout(self.timeout)
@@ -68,9 +71,9 @@ class DoctorMonitorSample(object):
                 sock.sendto(ICMP_ECHO_MESSAGE, (self.ip_addr, 0))
                 data = sock.recv(4096)
             except socket.timeout:
-                print "doctor monitor detected at %s" % time.time()
+                LOG.info("doctor monitor detected at %s" % time.time())
                 self.report_error()
-                print "ping timeout, quit monitoring..."
+                LOG.info("ping timeout, quit monitoring...")
                 return
             time.sleep(self.interval)
 
index 99e8fef..093d4e8 100755 (executable)
@@ -489,8 +489,8 @@ END_TXT
 }
 
 calculate_notification_time() {
-    detected=$(grep "doctor monitor detected at" monitor.log | awk '{print $5}')
-    notified=$(grep "doctor consumer notified at" consumer.log | awk '{print $5}')
+    detected=$(grep "doctor monitor detected at" monitor.log | awk '{print $10}')
+    notified=$(grep "doctor consumer notified at" consumer.log | awk '{print $10}')
     if ! grep -q "doctor consumer notified at" consumer.log ; then
         echo "ERROR: consumer hasn't received fault notification."
         exit 1