[python] Logovanie pristupu k suborom
Jan Janech
devel na atlas.sk
Neděle Duben 15 18:24:47 CEST 2007
azurIt wrote:
> Zdravim,
>
> chcel by som logovat vsetky pristupy k suborom vykonane cez python, da sa to nejako ? Pripadne, existuje nejaky rozumny a efektivny sposob ako toto dosiahnut ? Log by som si predstavoval nejako takto:
> Datum /cesta/k/skript.py otvoril /ceska/k/suboru
>
> Ide mi o globalne logovanie na urovni interpreteru (teda nie v danom skripte).
>
> azur
To by ti malo stacit prekryt si builtin funkciu open a builtin objekt
file nejakym vlastnym objektom... nie ?
teda nieco taketo:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~ filelog.py ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
import sys
import time
logfileobj = None
classicfile = file
class logfile(classicfile):
def __init__(self, filepath, mode):
t = time.strftime('%Y-%m-%d %H:%M:%S')
p = sys._getframe().f_back.f_code.co_filename
l = sys._getframe().f_back.f_lineno
print>>logfileobj, "%s %s(%d) otvoril %s (mod '%s')"%(t, p, l,
filepath, mode)
classicfile.__init__(self, filepath, mode)
def install(logpath):
global logfileobj
logfileobj = classicfile(logpath, 'wt')
import __builtin__
__builtin__.file = __builtin__.open = logfile
__all__ = ['install']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~ test.py ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
import filelog
filelog.install('log.log')
file('ahoj', 'w')
file('caw', 'w')
open('ahoj', 'r')
Další informace o konferenci Python