Cum se scrie corect jurnalele ()

[info sistem] [mesaj] [context]

în cazul în care:
  • informații despre sistem. ștampilă de timp, id de proces, id de fir și alte informații despre serviciu
  • mesaj. textul mesajului
  • context. orice informații suplimentare, contextul poate fi obișnuit pentru mesaje în cadrul unui anumit tip de operațiune.







Pentru a asocia perechile cerere / răspuns, este adesea folosit antetul http al X-Request-ID. Un astfel de antet poate genera un client sau poate fi generat pe partea de server. Adăugarea acestuia în contextul fiecărui rând al jurnalului va facilita găsirea tuturor mesajelor care au avut loc în timpul executării unei anumite interogări. Și în cazul sistemelor distribuite, antetul poate fi transmis prin lanțul de apeluri de rețea.
Dar cu un singur context în cadrul interogării există o problemă cu ORM, clienți HTTP sau alte servicii / biblioteci care își trăiesc propria viață. Și este bine dacă acestea oferă o oportunitate de a redefini loggerul lor standard cel puțin la nivel global, dar expunerea contextului loggerului în cadrul interogării nu este adesea realistă. Această problemă este în principal relevantă pentru procesarea cu mai multe fire, atunci când un proces servește mai multe solicitări. Dar, de exemplu, în cadrul Rails există o integrare foarte strânsă între toate componentele și cererile ActiveRecord pot fi scrise în jurnal împreună cu contextul global pentru cererea de rețea curentă. Și în Go, unele biblioteci de jurnal vă permit să creați în mod dinamic un nou obiect logger cu contextul potrivit, arată astfel:





reqLog: = log.WithField ("requestID", ID de solicitare)

După aceasta, o astfel de copie a loggerului poate fi transferată ca o dependență de alte obiecte. Dar absența unei interfețe de logare standardizate (de exemplu, ca psr-3 în php) provoacă creatorilor de biblioteci să pună în aplicare greșit implementările inconsecvente ale loggerilor. Prin urmare, dacă vă scrieți biblioteca pe Go și aveți o componentă de înregistrare în ea, nu uitați să furnizați o interfață pentru înlocuirea logger-ului cu una personalizată.







Articole similare

Trimiteți-le prietenilor: