次の構成ログファイルがあるとします。
[loggers]
keys=root,seeker,event
[handlers]
keys=consoleHandler,seekerFileHandler,eventFileHandler
[formatters]
keys=consoleFormatter,logFormatter
[logger_root]
level=DEBUG
handlers=consoleHandler,seekerFileHandler,eventFileHandler
[logger_seeker]
level=DEBUG
handlers=consoleHandler,seekerFileHandler
qualname=seeker
propagate=0
[logger_event]
level=DEBUG
handlers=consoleHandler,eventFileHandler
qualname=event
propagate=0
[handler_consoleHandler]
class=StreamHandler
level=INFO
formatter=consoleFormatter
args=(sys.stdout,)
[handler_seekerFileHandler]
class=FileHandler
level=DEBUG
formatter=logFormatter
args=('seeker.log','a')
[handler_eventFileHandler]
class=FileHandler
level=DEBUG
formatter=logFormatter
args=('event.log','a')
[formatter_consoleFormatter]
format=%(asctime)s - thread:%(thread)d - %(name)s - %(levelname)s | %(message)s
datefmt=%m/%d/%Y %X
[formatter_logFormatter]
format=%(asctime)s | %(message)s
datefmt=%m/%d/%Y %X
通常、私は次のようにします。
import logging
from logging.config import fileConfig
from os import getcwd
fileConfig(''.join([getcwd(),'/logging.conf']))
event_logger = logging.getLogger("event")
seeker_logger = logging.getLogger("seeker")
各ロガーを処理します。ただし、私はこのソフトウェアをWindowsとLinuxの2つの別々のプラットフォームで実行する傾向があるので、それぞれが「共通の」場所に保存しておくと便利です。私が探しているのは次のようなものです。
from sys import platform
if 'win' in platform:
#alter the save path to this location
if 'linux' in platform:
#alter save path to this location
しかし、私はこれを設定ファイルで実装する方法がわかりません、何かアイデアはありますか?