Inregistreaza interogari Slonik.
API
importati {createQueryLoggingInterceptor} din „slonik-interceptor-query-logging”;
/ ** * @property logValues Dicteaza daca trebuie incluse valorile parametrilor folositi pentru a executa interogarea. (implicit: adevarat) * / tip UserConfigurationType = {| + logValues: boolean |}; (userConfiguration: UserConfigurationType) => InterceptorType;
Exemplu de utilizare
Nota: Trebuie sa exportati ROARR_LOG = variabila de mediu adevarata pentru a fi tiparite jurnalele. Consultati documentatia Roarr pentru mai multe informatii.
importati {createPool} din „slonik”; importati {createQueryLoggingInterceptor} din „slonik-interceptor-query-logging”; interceptori const = [createQueryLoggingInterceptor ()]; const pool = createPool (‘postgres: //’, {interceptori}); asteapta connection.any (sql` SELECT ID, code_alpha_2 FROM country`);
Produce jurnal:
{“context”: {“package”: “slonik”, “poolId”: “01D4G1EHYPYX1DZ073G08QEPED”, “logLevel”: 30, “processId”: 769420982, “stats”: {“idleConnectionCount”: 0, “totalConnectionCount”: 1 , “WaitingRequestCount”: 0}}, “message”: “a creat o noua conexiune client”, “secventa”: 0, “timp”: 1551021590799, “versiune”: “1.0.0”} {“context”: {” pachet “:” slonik “,” poolId “:” 01D4G1EHYPYX1DZ073G08QEPED “,” logLevel “: 30,” processId “: 769420982,” stats “: {” idleConnectionCount “: 0,” totalConnectionCount “: 1,” waitingRequestCount }, “message”: “clientul este verificat din pool”, “sequence”: 1, “time “: 1551021590801,” version “:” 1.0.0 “} {” context “: {” package “:” slonik “,” poolId “:” 01D4G1EHYPYX1DZ073G08QEPED “,” connectionId “:” 01D4G1EJ8DZFX79EN8CRE5Z7VS ” 01D4G1EJB9P3SJ3V0SSVRTZ800 “,” logLevel “: 20,” sql “:” SELECT id, code_alpha_2 FROM country “,” stackTrace “: [],” values ”: []},” message “:” executand interogare “,” secventa “: 2, “time”: 1551021590890, “version”: “1.0.0”} {“context”: {“package”: “slonik”, “poolId”: “01D4G1EHYPYX1DZ073G08QEPED”, “connectionId”: “01D4G1EJ8DZFX79EN8CRE5Z “:” 01D4G1EJB9P3SJ3V0SSVRTZ800 “,” logLevel “: 20,”executionTime “:” 65ms “,” rowCount “: 250},” message “:” rezultatul executarii interogarii “,” secventa “: 3,” time “: 1551021590918,” version “:” 1.0.0 “} {” context ” : {“package”: “slonik”, “poolId”: “01D4G1EHYPYX1DZ073G08QEPED”, “logLevel”: 30, “processId”: 769420982, “stats”: {“idleConnectionCount”: 0, “totalConnectionCount”: 0, “waitingRequ : 0}}, “message”: “conexiunea clientului este inchisa si eliminata din grupul de clienti”, “secventa”: 4, “ora”: 1551021600922, “versiunea”: “1.0.0”}1551021590918, “version”: “1.0.0”} {“context”: {“package”: “slonik”, “poolId”: “01D4G1EHYPYX1DZ073G08QEPED”, “logLevel”: 30, “processId”: 769420982, “stats”: {“idleConnectionCount”: 0, “totalConnectionCount”: 0, “waitingRequestCount”: 0}}, “message”: “conexiunea clientului este inchisa si eliminata din grupul de clienti”, “secventa”: 4, “ora”: 1551021600922, “version”: “1.0.0”}1551021590918, “version”: “1.0.0”} {“context”: {“package”: “slonik”, “poolId”: “01D4G1EHYPYX1DZ073G08QEPED”, “logLevel”: 30, “processId”: 769420982, “stats”: {“idleConnectionCount”: 0, “totalConnectionCount”: 0, “waitingRequestCount”: 0}}, “message”: “conexiunea clientului este inchisa si eliminata din grupul de clienti”, “secventa”: 4, “ora”: 1551021600922, “version”: “1.
porno tens jovenes zorras
mi mujer es muy puta follada por su jefe
viejas tetonas comic maduras
chupadas mamadas a dos bocas
mamadas en la playa pollones enormes
abuelas incestos mama incesto
chantaje y lujuria se folla a su hijo
hermanas tetonas porno españa casero
enseñando a follar humillada y follada
corridas en el culo follame xxx
videos porno manga porno iberico
madres que se follan a sus hijos porno maduras en español
guarras masturbandose penes negros
peliculas x en castellano peliculas porno de viejas
amas de casa follando mamas cachondas
voyeur playa abuelos calientes
jovencitas xxx hd porno de abuelas
videos porno gratis caseros milf squirt
violada xxx mi vecina me folla
mi mujer follando porno agresivo
0.0″}waitingRequestCount “: 0}},” message “:” conexiunea clientului este inchisa si eliminata din grupul de clienti “,” secventa “: 4,” ora “: 1551021600922,” versiunea “:” 1.0.0 “}waitingRequestCount “: 0}},” message “:” conexiunea clientului este inchisa si eliminata din grupul de clienti “,” secventa “: 4,” ora “: 1551021600922,” versiunea “:” 1.0.0 “}
Folositi roarr-cli pentru a imprima destul de bine jurnalele.
Folosind roarr pretty-print se vor produce jurnale in urmatorul format:
[2019-02-24T15: 19: 50.799Z] INFO (30) (@slonik): a creat un nou pool de conexiuni client ID: 01D4G1EHYPYX1DZ073G08QEPED processId: 769420982 statistici: idleConnectionCount: 0 totalConnectionCount: 1 waitingRequestCount: 0 19: 50.801Z] INFO (30) (@slonik): clientul este verificat din pool-ul poolId: 01D4G1EHYPYX1DZ073G08QEPED processId: 769420982 stats: idleConnectionCount: 0 totalConnectionCount: 1 waitingRequestCount: 0 [2019-02-24] DEBUG (20) (@slonik): executarea query poolId: 01D4G1EHYPYX1DZ073G08QEPED connectionId: 01D4G1EJ8DZFX79EN8CRE5Z7VS queryId: 01D4G1EJB9P3SJ3V0SSVRTZ Z] DEBUG (20) (@slonik): rezultat executare interogare poolId: 01D4G1EHYPYX1DZ073G08QEPED connectionId: 01D4G1EJ8DZFX79EN8CRE5Z7VS queryId:01D4G1EJB9P3SJ3V0SSVRTZ800 Timp de executie: 65ms rand Count: 250 [2019-02-24T15: 20: 00.922Z] INFO (30) (@slonik): conexiunea clientului este inchisa si eliminata din pool-ul de pool-uri de clienti ID: 01D4G1EHYPYX1DZ073G08E0: : 0 waitingRequestCount: 0
Inregistrare auto_explain
propertyTime jurnal proprietate descrie cat a durat pana cand clientul sa execute interogarea, adica include cheltuielile generale de asteptare pentru o conexiune si latenta retelei, printre altele. Cu toate acestea, este posibil sa obtineti timpul real de executare a interogarii utilizand modulul auto_explain.
Exista mai multe premise:
– Incarcati extensia. LOAD ‘auto_explain’; – sau (daca utilizati AWS RDS): LOAD ‘$ libdir / plugins / auto_explain’; – Activati inregistrarea tuturor interogarilor. SET auto_explain.log_analyze = adevarat; SET auto_explain.log_format = json; SET auto_explain.log_min_duration = 0; SET auto_explain.log_timing = adevarat; – Permite Slonik sa captureze jurnalele auto_explain. SET client_min_messages = jurnal;
Acest lucru poate fi configurat folosind interceptorul afterPoolConnection, de ex
const pool = createPool (‘postgres: // localhost’, {interceptors: [{afterPoolConnection: async (connection) => {await connection.query (sql`LOAD ‘auto_explain’`); await connection.query (sql`SET auto_explain .log_analyze = true`); await connection.query (sql`SET auto_explain.log_format = json`); await connection.query (sql`SET auto_explain.log_min_duration = 0`); await connection.query (sql`SET auto_explain.log_timing = true`); asteapta connection.query (sql`SET client_min_messages = log`);}}]});
Interceptorul de inregistrare Slonik recunoaste si analizeaza mesajul JSON auto_explain, de ex
] Mod: Paralel simplu Constient: fals Cost de pornire: 4051,33 Cost total: 4051,34 Randuri de plan: 1 Latime de plan: 8 Timp real de pornire: 26,791 Timp total real: 26,791 Randuri reale: 1 Bucle reale: 1 Planuri: – Tip de nod: Seq Scan Parent Relatie: Outer Paralel Constient: fals Nume relatie: actor Alias: actor Cost de pornire: 0 Cost total: 3561.86 Randuri de plan: 195786 Latime de plan: 0 Timp de pornire real: 0.132 Timp total real: 15.29 Randuri reale: 195786 Bucle reale: 1