0
をログに苦しんで、私はマルチスレッドのルール・エンジンの上にウェブUIを持っています。ほとんどの場合、Web UIはルールエンジンによって収集されたデータに標準のCRUDサービスを提供するとともに、ルールサービスの起動と停止を行うように設計されています。(フラスコ/モジュール/デバッグ)
フラスコロガー(current_app.logger)をモジュールレベルのログ出力に添付して、実行中のサービスごとに出力ログを構成したいとします。不全
簡単なテスト: rules.py
テスト機能:
def stupid_logging_test():
logging.debug('Will flask log me?')
admin.py
:
@admin.route('/', methods=['GET', 'POST'])
def admin_root():
#show the root admin page.
servers = current_app.config['instance_servers']
metrics = None
if len(servers):
metrics = compileMetrics(servers)
# this includes starting/stopping rules engine and metrics
adminform = ServerAdminForm(request.form)
if request.method == 'POST':
if adminform.startserver.data:
current_app.logger.info('performing rule server start.')
start_source_servers()
#current_app.logger.debug(pprint.pformat(form))
#current_app.logger.debug(str(tabledata))
elif adminform.stopserver.data:
current_app.logger.info('performing rule server stop.')
stop_source_servers()
#current_app.logger.debug(pprint.pformat(form))
#current_app.logger.debug(str(tabledata))
else:
current_app.logger.info('unknown submit?')
current_app.logger.debug('debug line test.')
rules.stupid_logging_test()
return render_template("admin_main.html", adminform=adminform,
metrics=metrics, servers=servers)
ログ出力(コンソール):
--------------------------------------------------------------------------------
INFO in admin [/<snip>/admin.py:51]:
unknown submit?
--------------------------------------------------------------------------------
INFO:ui:unknown submit?
--------------------------------------------------------------------------------
DEBUG in admin [/<snip>/admin.py:52]:
debug line test.
--------------------------------------------------------------------------------
DEBUG:ui:debug line test.
logging output (file)
:
unknown submit?
debug line test.
そして最後に、私のロギング設定(今のところ)
ui:__init__.py
# ... other app config
log_target = RotatingFileHandler(app.config['LOGFILE'], maxBytes=1024 * 1024 * 100, backupCount=20)
if 'DEBUG' in app.config and app.config['DEBUG']:
log_target.setLevel(logging.DEBUG)
else:
log_target.setLevel(logging.WARN)
app.logger.addHandler(log_target)
rules_logger = getLogger('rules')
rules_logger.addHandler(log_target)
app.config['core_log'] = log_target
は、私は私の問題は、getLoggerメソッドに関係している感覚を得るです。私はロガーに名前を与えているわけではありませんが、デフォルトはモジュール自体の名前だと思いますか?
:
ui:__init__.py
:以下の変更は、問題を解決しましたか?あなたはcurrent_app.logger' 'に'デバッグラインtest'を記録したがrules.pyに、あなたは、それらが異なるならば、明らかに、彼らは別のログに行くを提供していないいくつかの 'logging'変数にログインします。 –@ TadhgMcDonald-Jensenそれはちょうどロギングモジュールです。私が読んだドキュメンテーションにはこれに関する少しの混乱があるようです。あなたは、モジュール内の特定のロガーを設定する場合に推奨される方法は、 '' mylogger =のgetLogger(__名前__) ''しかし、単に特定のロガーを設定せずに、直接ロギングモジュールを使用することが有効であると思わを行うことです。上記とTadhgMcDonald・ジェンセン@ – SkyLeach
は、モジュールレベルの ''ロガー= logging.getLogger(__ __名) ''も失敗しているようだ、と述べました。 – SkyLeach