ログ出し
2022/10/06 追記開始
formatの設定で行番号もモジュール名も自動で出力出来ちゃうじゃあないですか。
2022/10/06 追記終了
どんな言語、プログラムでもログ出しは基本だと思います。
python勉強しだしてから、簡単に使えるログ出し関数が欲しくなったので、情報収集しました。
実装だけなら、テキストファイルに出力するだけでいいのですが、どうせならpythonっぽくということで、loggingとか色々使ってみました。
結果、ログ出し関数を呼んだファイル名とか、行番号まで出力できるというものが完成。
VBAでは自作関数に呼び出し元モジュール名とか関数名を渡していましたよ・・・行番号なんて手間かかりすぎて無理。
loggingではDEBUGとかINFOとかのレベルや、出力フォーマット整えたりもできるみたいですが、とりあえずはこれで十分。
区切りがTab文字なのは、テキストエディタから、そのままExcelに張り付ける事ができて、分析がやりやすいからです。
import logging import datetime import inspect import os def kanilog(msg): #ルートには出力しない logger = logging.getLogger('kanilog') logger.setLevel(logging.DEBUG) #ファイル名に日付を入れる LOG_FILENAME = 'kanilog_' + datetime.datetime.today().strftime('%Y%m%d') + '.log' handler = logging.FileHandler(filename=LOG_FILENAME) handler.setLevel(logging.DEBUG) logger.addHandler(handler) #出力日時 logmsg = datetime.datetime.today().strftime("%Y/%m/%d %H:%M:%S") #ファイル名(フルパスからファイル名のみに変更) logmsg = logmsg + '\t' + os.path.basename(inspect.currentframe().f_back.f_code.co_filename) #行番号 logmsg = logmsg + '\t' + str(inspect.currentframe().f_back.f_lineno) #メッセージ logmsg = logmsg + '\t' + msg #出力 print(logmsg) logger.debug(logmsg) #出力テスト kanilog('test')
参考サイト
http://pheromone.hatenablog.com/entry/20100817/1282055593
https://qiita.com/ymko/items/b46d32b98f013f06d805
http://docs.python.jp/2.6/library/logging.html
https://python.civic-apps.com/logifle-logger/