[python] Logovanie pristupu k suborom

azurIt azurit na pobox.sk
Neděle Duben 15 18:27:43 CEST 2007


mas nejaky napad, ako dosiahnut aby sa to automaticky importovalo do _kazdeho_ skriptu ? ide mi proste o logovanie, ludia vobec nemusia (ani by vlastne nemali) vediet, ze sa nieco taketo deje. musi to byt uplne transparentne.


>-----Pôvodná správa-----
>Od: Jan Janech [mailto:devel na atlas.sk]
>Komu: Konference PyCZ <python na py.cz>
>Predmet: Re: [python] Logovanie pristupu k suborom
>
>
>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')
>
>_______________________________________________
>Python mailing list
>Python na py.cz
>http://www.py.cz/mailman/listinfo/python



Další informace o konferenci Python