Çok iş parçacıklı kurallar altyapısının üzerinde bir web UI var. Çoğunlukla, web kullanıcı arayüzü kurallar motoru tarafından toplanan verilere standart CRUD hizmetleri sağlamak ve kuralların başlatılması ve kapatılması için tasarlanmıştır.Günlüğe kaydetme (Flask/Modül/Hata Ayıklama)
Flask logger'ı (current_app.logger) modül seviyesi kayıt çıkışına bağlamak ve daha sonra her çalışan servis için çıkış kayıtlarını yapılandırmak istiyorum. yetmezliği olan
Basit testi: rules.py
Test fonksiyonu:
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)
Günlüğü çıkışı (konsol):
--------------------------------------------------------------------------------
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.
Vebenim sorun getLogger yöntemi ile ilgisi var hissine kapıldım
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
(şimdiye kadar) benim günlük yapılandırmasıdır. Kaydediciye bir isim vermiyorum, ama varsayılanın modülün kendisinin adı olduğunu mu varsayıyorum? İşleyicideki loglevel'i ayarlamak
:
ui:__init__.py
: Aşağıdaki değişiklik sorunu çözüldü? "debug line test" öğesini "current_app.logger" ile kaydedersiniz, ancak rules.py içerisinde sağladığınız bir "logging" değişkenine giriş yaparsınız, eğer farklıysa, o zaman farklı kayıtlara giderler. –@ TadhgMcDonald-Jensen bu sadece bir kayıt modülü. Okuduğum belgelerde bunun hakkında biraz kafa karışıklığı var gibi görünüyor. Bir modülde belirli bir kaydediciyi yapılandırırsanız, önerilen yöntem '' mylogger = getLogger (__ isim __) '' yapmaktır, ancak aynı zamanda kayıt modülünü doğrudan belirli bir kaydediciyi yapılandırmadan doğrudan kullanmak için geçerli gibi görünmektedir. – SkyLeach
@ TadhgMcDonald-Jensen ile yukarıda bahsedilen, bir modül seviyesinde '' logger = logging.getLogger (__ isim __) '' da başarısız gibi görünüyor. – SkyLeach