From ca4c22a018b627e22e9566efc17dcf00214c43de Mon Sep 17 00:00:00 2001 From: Mark Jessop Date: Fri, 13 Sep 2019 21:03:20 +0930 Subject: [PATCH] Modified logger to write to new file each start. --- chasemapper/atmosphere.py | 8 ++++---- chasemapper/logger.py | 16 +++++++++++++--- horusmapper.py | 4 ++-- log_files/chase_logs_go_here.txt | 0 4 files changed, 19 insertions(+), 9 deletions(-) create mode 100644 log_files/chase_logs_go_here.txt diff --git a/chasemapper/atmosphere.py b/chasemapper/atmosphere.py index 3a477bd..223e2b9 100644 --- a/chasemapper/atmosphere.py +++ b/chasemapper/atmosphere.py @@ -23,14 +23,14 @@ def getDensity(altitude): tempGrad = -0.0065 # Temperature gradient [deg K/m] RGas = 8.31432 # Gas constant [kg/Mol/K] R = 287.053 - deltaTemperature = 0.0; + deltaTemperature = 0.0 # Lookup Tables altitudes = [0, 11000, 20000, 32000, 47000, 51000, 71000, 84852] pressureRels = [1, 2.23361105092158e-1, 5.403295010784876e-2, 8.566678359291667e-3, 1.0945601337771144e-3, 6.606353132858367e-4, 3.904683373343926e-5, 3.6850095235747942e-6] temperatures = [288.15, 216.65, 216.65, 228.65, 270.65, 270.65, 214.65, 186.946] tempGrads = [-6.5, 0, 1, 2.8, 0, -2.8, -2, 0] - gMR = gravity * airMolWeight / RGas; + gMR = gravity * airMolWeight / RGas # Pick a region to work in i = 0 @@ -68,7 +68,7 @@ def seaLevelDescentRate(descent_rate, altitude): ''' Calculate the descent rate at sea level, for a given descent rate at altitude ''' rho = getDensity(altitude) - return math.sqrt((rho / 1.22) * math.pow(descent_rate, 2)) + return math.sqrt((rho / 1.225) * math.pow(descent_rate, 2)) @@ -86,7 +86,7 @@ def time_to_landing(current_altitude, current_descent_rate=-5.0, ground_asl=0.0, # Calculate the sea level descent rate. _desc_rate = math.fabs(seaLevelDescentRate(current_descent_rate, current_altitude)) - _drag_coeff = _desc_rate*1.1045 # Magic multiplier from predict.php + _drag_coeff = _desc_rate*1.106797 # Multiply descent rate by square root of sea-level air density (1.225). _alt = current_altitude diff --git a/chasemapper/logger.py b/chasemapper/logger.py index 0e441b7..3eb9102 100644 --- a/chasemapper/logger.py +++ b/chasemapper/logger.py @@ -11,7 +11,7 @@ import logging import os import pytz import time -from threading import Thread +from threading import Thread, Lock try: # Python 2 from Queue import Queue @@ -25,17 +25,25 @@ class ChaseLogger(object): Log all chase data into a file as lines of JSON. """ - def __init__(self, filename): + def __init__(self, filename=None, log_dir="./log_files"): - self.filename = filename + if filename is not None: + # Use user-supplied filename if provided + self.filename = filename + else: + # Otherwise, create a filename based on the current time. + self.filename = os.path.join(log_dir, datetime.datetime.utcnow().strftime("%Y%m%d-%H%MZ.log")) + self.file_lock = Lock() + # Input Queue. self.input_queue = Queue() # Open the file. try: self.f = open(self.filename, 'a') + logging.info("Logging - Opened log file %s." % self.filename) except Exception as e: self.log_error("Logging - Could not open log file - %s" % str(e)) return @@ -125,6 +133,7 @@ class ChaseLogger(object): while self.input_processing_running: # Process everything in the queue. + self.file_lock.acquire() while self.input_queue.qsize() > 0: try: _data = self.input_queue.get_nowait() @@ -133,6 +142,7 @@ class ChaseLogger(object): except Exception as e: self.log_error("Error processing data - %s" % str(e)) + self.file_lock.release() # Sleep while waiting for some new data. time.sleep(5) diff --git a/horusmapper.py b/horusmapper.py index 2ac0e22..5467a79 100644 --- a/horusmapper.py +++ b/horusmapper.py @@ -837,7 +837,7 @@ if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("-c", "--config", type=str, default="horusmapper.cfg", help="Configuration file.") parser.add_argument("-v", "--verbose", action="store_true", default=False, help="Verbose output.") - parser.add_argument("-l", "--log", type=str, default="chaselog.log", help="Log file name.") + parser.add_argument("-l", "--log", type=str, default=None, help="Custom log file name. (Default: ./log_files/.log") args = parser.parse_args() # Configure logging @@ -858,7 +858,7 @@ if __name__ == "__main__": logging.getLogger().addHandler(web_handler) # Start the Chase Logger - chase_logger = ChaseLogger(args.log) + chase_logger = ChaseLogger(filename=args.log) # Attempt to read in config file. chasemapper_config = read_config(args.config) diff --git a/log_files/chase_logs_go_here.txt b/log_files/chase_logs_go_here.txt new file mode 100644 index 0000000..e69de29