sys.audit() și sys.addaudithook() în Python

Interpretorul (sys) Python 3.8+

Evenimente de audit: află când programul deschide fișiere, pornește procese sau face alte operații sensibile.

Sintaxă
sys.addaudithook(functie)
sys.audit(eveniment, *argumente)

Ce face sys.audit() și sys.addaudithook()

Interpretorul și biblioteca standard emit evenimente de audit pentru operații sensibile: open, subprocess.Popen, socket.connect, exec, import etc. addaudithook(f) înregistrează o funcție f(eveniment, argumente) apelată pentru fiecare; funcțiile înregistrate nu mai pot fi scoase. Ridicarea unei excepții din funcție blochează operația.

sys.audit(nume, *args) emite propriile evenimente, astfel încât și codul tău să poată fi auditat.

Parametri

Parametru Descriere
functie Funcția (eveniment, argumente).
eveniment, *argumente Pentru audit: numele și datele evenimentului.

Ce returnează

None.

Exemple

Exemplul 1: Jurnal de operații sensibile

import sys

def auditor(eveniment, argumente):
    if eveniment == "open" and str(argumente[0]).endswith(".txt"):
        print("[audit] deschidere:", argumente[0], argumente[1])
    elif eveniment.startswith("magazin."):
        print("[audit]", eveniment, argumente)

sys.addaudithook(auditor)
with open("nota.txt", "w") as f:
    f.write("x")
sys.audit("magazin.plata", "Ana", 250)

Rezultat

[audit] deschidere: nota.txt w
[audit] magazin.plata ('Ana', 250)

Greșeli frecvente

  • Faci operații lente sau afișezi tot în funcția de audit: este apelată pentru foarte multe evenimente interne. Filtrează devreme după nume.

Comenzi înrudite