1
私はgpsdからいくつかのデータを読み込み、Pythonのロギングモジュールを使って書きます。私は、このロガーが動作している間にtailを使用して読み込んだものの、このファイルに書き込むプロセスは1つだけであると確信しています。毎回、次のようなログエントリがいくつか表示されています。私は、誰かが(おそらくPython)null制御文字をログファイルに挿入する原因を解明することを望んでいます。ファイルに制御文字を挿入するPythonロガー
私が使用していたコードは次のとおりです。
"""
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()
ログに書き込むコマンドが1つしか表示されません。だから私はそれらのバイトがどこから来ているのか分からない。あなたは同じロガーに別の仕事を書いている可能性はありますか?ログの名前を 'root'以外のものに変更し、場合によっては別のファイル名に変更するとどうなりますか? – RobertB
@RobertB、私に戻っていただきありがとうございます。私はあなたの提案を試すことができます。このバグは再現するのが難しいです。私がこれをもう一度掘り起こすまでには、しばらく時間がかかるでしょう。私が説明した問題を引き起こしているものが何であるかを把握したら、私は報告します。 – dps