PythonにはJavaでいうlog4JやC#でいうlog4netみたいな有名なログ管理方法がないようなので、
仕方なく自分で調べつつ、試行錯誤してみたときのメモとなります。
いい方法があれば情報共有して頂けますと有り難いです。
「Python ログ」あたりでGoogleで検索すると下記のサイトが出ると思うのですが、
そちらのサイトで勉強しつつ、ログファイル出力する方法や設定値をiniファイルへ持たせるようにしています。
「ログ出力のための print と import logging はやめてほしい - Qiita」
https://qiita.com/amedama/items/b856b2f30c2f38665701
https://qiita.com/amedama/items/b856b2f30c2f38665701#%E9%95%B7%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F
一応Python2,3、WindowsとLinuxでの動作確認はしています。
happy coding!
main.py
import configparser
# 必要に応じてエラーレベルは設定してあげて下さい
from logging import getLogger, StreamHandler, Formatter,FileHandler, DEBUG, WARNING
def make_logger(logDirectory, error_level):
u""" ログ設定を行う"""
logger = getLogger(__name__)
logger.setLevel(error_level)
# フォーマッタを生成する
fmt = Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# 標準出力用ハンドラーを生成する
stdHandler = StreamHandler()
stdHandler.setLevel(error_level)
# ハンドラーにフォーマッターを設定する
stdHandler.setFormatter(fmt)
logger.addHandler(stdHandler)
# ファイル出力ハンドラーを生成する
# 現在日付
todayYYYYMMDD = date.today().strftime("%Y%m%d")
fileHandler = FileHandler(logDirectory.replace(os.path.sep, '/') + '/' + todayYYYYMMDD + '.log')
fileHandler.setFormatter(fmt)
# ロガーにハンドラーを設定する
logger.addHandler(fileHandler)
return logger
if __name__ == '__main__':
# 設定ファイルより各種設定を読み込む
ini_file = configparser.ConfigParser()
# 実行するpythonファイルと同名のinifileを読み込む
ini_file.read(args[0].replace('.py', ".ini"), encoding='utf-8')
# ログ設定
logger = make_logger(ini_file.get('logger', 'logDirectory'), ini_file.get('logger', 'error_level'))
# ログ出力を行う
logger.info('info')
logger.warn('warn')
main.ini
[logger]
logDirectory = C:\Dev\Log
error_level = WARNING