diff --git a/src/config.py b/src/config.py --- a/src/config.py +++ b/src/config.py @@ -3,11 +3,13 @@ import logging as log from logging.handlers import TimedRotatingFileHandler -log.basicConfig( - level=log.INFO,format="%(asctime)s %(levelname)s: %(message)s",datefmt="%Y-%m-%d %H:%M:%S" -) logger=log.getLogger() -logger.addHandler(TimedRotatingFileHandler("/var/log/morevna.log",when="midnight",backupCount=9)) +logger.setLevel(log.INFO) +formatter=log.Formatter("%(asctime)s %(levelname)s: %(message)s",datefmt="%Y-%m-%d %H:%M:%S") +handler=TimedRotatingFileHandler("/var/log/morevna/mor.log",when="midnight",backupCount=9) +handler.setFormatter(formatter) +logger.addHandler(handler) + version=0 diff --git a/src/morevna.py b/src/morevna.py --- a/src/morevna.py +++ b/src/morevna.py @@ -1,5 +1,6 @@ import sys import os.path +import logging as log from argparse import ArgumentParser from util import spawnDaemon @@ -41,7 +42,10 @@ def serve(args): if args.port: conf.port=args.port s=Server(args.datafile,args.tree) - spawnDaemon(s.serve) + try: + spawnDaemon(s.serve) + except Exception as e: + log.exception("exception: %s",e) parser=ArgumentParser() diff --git a/src/server.py b/src/server.py --- a/src/server.py +++ b/src/server.py @@ -51,7 +51,13 @@ class Server: self._ss.listen(1) self._lastIndex=-1 - self._dataFile=None + self._dataFileHandle=None + + @property + def _dataFile(self): + if not self._dataFileHandle: + self._dataFileHandle=open(self._filename, mode="rb+") + return self._dataFileHandle def serve(self): while True: @@ -113,8 +119,6 @@ class Server: def _receiveData(self,jsonData,binData): log.info("received data block #{0}: {1}...{2}".format(jsonData["index"],binData[:5],binData[-5:])) - if not self._dataFile: - self._dataFile=open(self._filename, mode="rb+") i=jsonData["index"] if self._lastIndex+1!=i: self._dataFile.seek(i*self.BLOCK_SIZE) @@ -127,8 +131,8 @@ class Server: def _finalize(self): log.info("closing session...") - if self._dataFile: - self._dataFile.close() + self._dataFile.close() + self._dataFileHandle=None if self._treeFile: log.info("updating hash tree...") for (k,v) in self._newLeaves.items():