🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
GPS

GPSは、Global Positioning Systemの略です。衛星信号を使用して受信機の地上又は空中内の居場所を特定するナビゲーションシステムです。"GPS"は受信機のことも指します。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

3793閲覧

ログファイルに出力 エラーTypeError: log() missing 1 required positional argument: 'msg

kouta129

総合スコア6

GPS

GPSは、Global Positioning Systemの略です。衛星信号を使用して受信機の地上又は空中内の居場所を特定するナビゲーションシステムです。"GPS"は受信機のことも指します。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/11/22 12:17

前提・実現したいこと

プログラム初心者です。
GPSモジュールを使用し、緯度経度の計測をしているのですが最初はprint文で出力していたのですが、今回ログファイルに緯度経度を出力したく、実行してみたところこの様なエラー文がでました。なぜこの様なエラー文が出るのか是非教えていただきたいです。

発生している問題・エラーメッセージ

TypeError: log() missing 1 required positional argument: 'msg'

該当のソースコード

Python3

1import serial 2import micropyGPS 3import threading 4import time 5import logging 6 7#ログの出力名を設定する 8logger = logging.getLogger('GPSTest') 9 10# 11logger.setLevel(10) 12 13# 14fh = logging.FileHandler('GPS.log') 15logger.addHandler(fh) 16 17gps = micropyGPS.MicropyGPS(9, 'dd') # MicroGPSオブジェクトを生成する。 18 # 引数はタイムゾーンの時差と出力フォーマット 19 20def rungps(): # GPSモジュールを読み、GPSオブジェクトを更新する 21 s = serial.Serial('/dev/serial0', 9600, timeout=10) 22 s.readline() # 最初の1行は中途半端なデーターが読めることがあるので、捨てる 23 while True: 24 sentence = s.readline().decode('utf-8') # GPSデーターを読み、文字列に変換する 25 if sentence[0] != '$': # 先頭が'$'でなければ捨てる 26 continue 27 for x in sentence: # 読んだ文字列を解析してGPSオブジェクトにデーターを追加、更新する 28 gps.update(x) 29 30gpsthread = threading.Thread(target=rungps, args=()) # 上の関数を実行するスレッドを生成 31gpsthread.daemon = True 32gpsthread.start() # スレッドを起動 33 34while True: 35 if gps.clean_sentences > 1: # ちゃんとしたデーターがある程度たまったら出力する 36 #h = gps.timestamp[0] if gps.timestamp[0] < 24 else gps.timestamp[0] - 24 37 #print('%2d:%02d:%04.1f' % (h, gps.timestamp[1], gps.timestamp[2])) 38 latlon = (gps.latitude[0], gps.longitude[0]) 39 logger.log(latlon) 40 #rint('海抜: %f' % gps.altitude) 41 #rint(gps.satellites_used) 42 #rint ('衛星番号: (仰角, 方位角, SN比)') 43 for k, v in gps.satellite_data.items(): 44 print('%d: %s' % (k, v)) 45 print('') 46 time.sleep(3.0)

試したこと

先に緯度経度だけ欲しいので他の出力はコメントアウトしました。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

logの呼び出し方は、log(level, msg, *args, **kwargs)で、整数でログのレベルを指定します。

Python

1logger.log(99,"!!!!!!") 2あるいは、定数を使って、 3logger.log(logging.INFO, "something")

logger.setLevel(10)しているので、10以上の値を指定した時だけ出力されます。

レベルは、CRITICAL > ERROR > WARNING > INFO > DEBUGなので、

Python

1logger.setLevel(logging.INFO) 2logger.error("AAAAA") # ⇒ 出力される 3logger.debug("AAAAA") # ⇒ 出力されない 4logger.log(logging.ERROR, "AAAAA") # logger.error("AAAAA") と同じ

ということになります。

投稿2019/11/22 12:48

otn

総合スコア85893

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kouta129

2019/11/22 12:53

回答ありがとうございます。無事レベルを指定したらログファイルに出力できました!!ありがとうございます‼
guest

0

logger.log(latlon)

このlog関数というものはどういう引数を取る関数なんでしょうか。
そして、このlatlonという変数はどういう型を持ってるんでしょう

投稿2019/11/22 12:29

y_waiwai

総合スコア88038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kouta129

2019/11/22 12:57

回答ありがとうございます。ログのレベルを指定したらファイルに出力できるようになりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問