https://kokiblog.com/2019/08/03/python_logging/
こちらのページに掲載されているように、YAML形式でloggingの設定をしたいのですが
上記サイトの場合ですと、sysログのログローテのように、一個のファイルに追記していく方式だと思います。
これを下記のように実行ごとに個別のログファイルを作成したいです。
(ローテはOSといいますか、linuxのログローテをするので、特に不要)
例えば、以下のイメージです。
aaa.py : /script/log/yyyymmdd_aaa_<固有>.log
bbb.py : /script/log/yyyymmdd_bbb_<固有>.log
ccc.py : /script/log/yyyymmdd_bbb_<固有>.log
<固有>の部分は、実行したスクリプト側でしか保持してないので
設定ファイルには記載できないのですが、このような場合の設定ファイル側の記載方法がわからずご教授ください。。。
例えば設定ファイル側は仮で記載しておく(もしくはfilenameを書かない?)。
その後実行するpython側で上書きするイメージでしょうか?
aaa.py 側でlogging.basicConfig(filename=<>)だけ上書きみたいなこと可能でしょうか?
config.yaml
version: 1 formatters: testFormatter: format: '%(asctime)s - %(name)s - %(levelname)s - %(message)s' datefmt: '%Y/%m/%d %I:%M:%S' handlers: file: class: logging.handlers.RotatingFileHandler level: INFO formatter: testFormatter filename: /script/log/<可変>.log loggers: testLogger: level: INFO handlers: [file] propagate: no root: level: INFO handlers: []
aaa.py
import yaml from logging import config, getLogger def main(): config.dictConfig(yaml.safe_load(open('config.yaml').read())) logger = getLogger('testLogger') logger.debug('debug') logger.info('info') if __name__ == '__main__': koyuu = 'a_py' main()
aaa.py
import yaml from logging import config, getLogger def main(): config.dictConfig(yaml.safe_load(open('config.yaml').read())) logger = getLogger('testLogger') logger.debug('debug') logger.info('info') if __name__ == '__main__': koyuu = 'b_py' main()
あなたの回答
tips
プレビュー