2017-09-08 1 views
1

Je lis des données de gpsd et je les écris à l'aide du module de journalisation de Python. Je suis assez confiant qu'un seul processus écrit dans ce fichier, bien que je le lise en utilisant tail alors que ce logger est en cours d'exécution. De temps en temps, je vois des entrées de journal qui ressemblent à l'image ci-dessous. J'espère que quelqu'un peut faire la lumière sur ce qui causerait (probablement Python) d'insérer des caractères de contrôle null dans mon fichier journal.Enregistreur Python insérant des caractères de contrôle null (^ @) dans le fichier

enter image description here

Le code J'utilise est:

""" 
Read the GPS continuously 
""" 
import logging 
from logging.handlers import RotatingFileHandler 
import sys 
import gps 

LOG = '/sensor_logs/COUNT.csv' 

def main(): 
    log_formatter = logging.Formatter('%(asctime)s,%(message)s', "%Y-%m-%d %H:%M:%S") 

    my_handler = RotatingFileHandler(LOG, mode='a', maxBytes=1024*1024, 
            backupCount=1, encoding=None, delay=0) 
    my_handler.setFormatter(log_formatter) 
    my_handler.setLevel(logging.INFO) 

    app_log = logging.getLogger('root') 
    app_log.setLevel(logging.INFO) 
    app_log.addHandler(my_handler) 

    session = gps.gps("localhost", "2947") 
    session.stream(gps.WATCH_ENABLE | gps.WATCH_NEWSTYLE) 

    while True: 

     try: 
      report = session.next() 
      if hasattr(report, 'gdop'): 
       satcount = 0 
       for s in report['satellites']: 
        if s['used'] == True: 
         satcount+=1 
       data = "{}".format(str(satcount)) 
       app_log.info(data) 

     except KeyError: 
      pass 
     except KeyboardInterrupt: 
      quit() 
     except StopIteration: 
      session = None 

if __name__ == "__main__": 
    main() 
+0

Je ne vois que la commande qui écrit dans le journal. Donc, je ne suis pas sûr d'où viennent ces octets. Est-il possible que vous ayez un autre travail d'écriture sur le même enregistreur? Que se passe-t-il si vous changez le nom du journal en autre chose que 'root' et en un nom de fichier différent au cas où? – RobertB

+0

J'apprécie que vous reveniez à moi, @RobertB. Je peux essayer ce que tu proposes. Ce bug est difficile à reproduire. Il faudra encore un certain temps avant que je puisse creuser de nouveau. Je rapporterai si et quand je découvre ce qui cause le problème que j'ai décrit. – dps

Répondre

0

Cela a fini par être en raison de matériel défectueux. Merci pour votre aide, @RobertB.