[Python-es] Funciones Decoradores
Manuel A. Estevez Fernandez
stvzito en gmail.com
Mie Jun 22 00:07:34 CEST 2011
Hola que tal
Estoy aprendiendo a utilizar las funciones decoradoras para llevar un log:
Donde tengo la funcion decoradora:
/def log(f):
def inner(*args,**kwargs):
if sincro_config.NIVEL_REGISTRO == 1:
archivo_log_ = open(config.LOG_PATH,'a')
archivo_log_.write('Ejecutando %s
%s\n'%(f.__name__,strftime("%Y-%m-%d %H:%M:%S", localtime())))
archivo_log_.close()
#return inner
elif sincro_config.NIVEL_REGISTRO==2:
archivo_log_ = open(config.LOG_PATH,'a')
archivo_log_.write('Ejecutando %s
%s\n'%(f.__name__,strftime("%Y-%m-%d %H:%M:%S", localtime())))
archivo_log_.write('Parametros Recibos: \n')
for name,value in kwargs.items():
archivo_log_.write('Nombre: %s\t\tValor:
%s\n'%(name,value))
archivo_log_.close()
return inner/
ademas tengo la clase de la cual quiero ir guardando los sucesos:
class Conexion:
configuracion_ = ''
cursor_ = ''
bandera_ = ''
conxn_ = ''
def __init__(self,configuracion_):
self.configuracion_ = configuracion_
return
@log
def get_pk(self,_tabla):
[..]
return lista_
@log
def get_query_statement(self,_diccionario,_tabla,_operacion):
[..]
return cadena
@log
def connect(self):
[..]
return
@log
def get_informacion(self ,_tabla,_diccionario ):
query_ = self.get_query_statement(_diccionario,_tabla,'select')
resultado_ = self.cursor_.query(query_).dictresult()
return resultado_
# Funcion que tiene como finalidad realizar una escritura en la
base de datos
# rebice un diccionario con los campos, el nombre de la tabla y el
tipo de operacion
# a realizar ( insert o update)
@log
def set_informacion(self,_diccionario,_tabla, _operacion):
[ .. ]
return success_
# Cierra la conexion con la base de datos
@log
def close(self):
[ .. ]
return
Entonces cual realizo una prueba de mi clase con el siguiente script:
from sincro_config import sincro_config
import sincro_conexion
db_ = sincro_conexion.Conexion(sincro_config)
db_.connect()
ventas_ = {'id_sucursal':2}
query_ = db_.get_informacion('sucursales',ventas_)
print query_
db_.close()
El log marcado como 2 :
me da el siguiente resultado:
/Ejecutando connect 2011-06-20 18:30:42
Parametros Recibos:
Ejecutando get_informacion 2011-06-20 18:30:42
Parametros Recibos:
Ejecutando close 2011-06-20 18:30:42
Parametros Recibos: /
Alguien me podría ayudar para poder guardar los parámetros que recibe la
función que se va a ejecutar, y ademas la funcion get_informacion,
dentro de su funcionamiento manda a llamar a la funcion
get_query_statement y esta no se registra en el log ¿por qué?
Saludos y gracias y por su atención.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20110621/886e14c6/attachment.html>
Más información sobre la lista de distribución Python-es