El archivo resultante viene en un formato humanamente legible.
Útil para:
a) Depurar el código de tu aplicación
b) Hacer que el sistema sea auditable
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Log de transacciones y errores con PHP y PostgreSql</title> </head> <body> <?php include("lib_database.php"); // no olvides incluir la ruta en caso de ser necesario $xsql = "Select * FROM tabla_prueba Limit 5"; $xres = LOGS($xconn, $xsql); ?> </body> </html> <?php // Archivo lib_database.php $xconn_host = '127.0.0.1'; $xconn_port = '5432'; $xconn_name = 'prueba_db'; $xconn_user = 'www_prueba'; $xconn_pwd = 'pwdprueba'; // Aquí debes especificar la ruta en donde se van a grabar los archivos de texto. // En esta ejemplo, puedo escoger dos ubicaciones diferentes: la del servidor de pruebas // y la del servidor de producción. $xcarpetaLogs = '/usr/local/apache2/htdocs/php/libs/logs/'; $xcarpetaErrs = '/usr/local/apache2/htdocs/php/libs/errors/'; if ($_SERVER['HTTP_HOST'] != '127.0.0.1') { $xcarpetaLogs = '/var/www/code/libs/logs/'; $xcarpetaErrs = '/var/www/code/libs/errors/'; } $xconnect = "host=".$xconn_host." port=".$xconn_port." dbname=".$xconn_name." user=".$xconn_user." password=".$xconn_pwd." "; $xconn= pg_connect($xconnect); pg_query($xconn, "SET CLIENT_ENCODING TO 'UTF8'"); // aquí se puede elegir SQL_ASCII, LATIN1..LATIN15, etc. function LOGS($xconn, $xtransaccion) { //Ejecutar transaccion $xtransaccion_old = $xtransaccion; $xresult_sql = pg_query($xconn, $xtransaccion); $xlast_error = pg_last_error($xconn); $xfecha = date("Y-m-d"); $xhora = date("H:i:s"); // Generación de la ficha $xcadenota = "\nFECHA:\t\t".date("Y-m-d").", ".date("H:i:s"); $xcadenota.= "\nUSUARIO:\t".$_SESSION['id_usuario']." - ".$_SESSION['nombre_usuario']; // Aqui colocar tus propias variables de sesi?n $xcadenota.= "\nHOST:\t\t".$_SERVER['HTTP_HOST']; $xcadenota.= "\nCLIENTE:\t".$_SERVER['REMOTE_ADDR']; $xcadenota.= "\nSITIO:\t\t".$_SESSION['id_sitio']." - ".$_SESSION['nombre_unidad']; // Aqui colocar tus propias variables de sesión $xcadenota.= "\nPERFIL:\t\t".$_SESSION['id_perfil']." - ".$_SESSION['perfil']; // Aqui colocar tus propias variables de sesión $xcadenota.= "\nLLAMADA:\t".$_SERVER['HTTP_REFERER']; // Coloca el nombre del programa que hizo la llamada al programa que se ejecutó $xcadenota.= "\nPROGRAMA:\t".$_SERVER['REQUEST_URI']; // Coloca el nombre del programa que se ejecutó más sus variables trasferidas por la URL if ($xlast_error) $xcadenota.= "\n\t\t".$xlast_error; // En caso de haber error, coloca el mensaje de error del manejador de la BD $xcadenota.= "\nQUERY:\t\t".$xtransaccion_old."\n\n"; // Coloca la transacci?n o la consulta tal cual sucedi? en la BD // Aquí decidir la carpeta donde se tengan permisos de escritura para el usuario www-data // automáticamente se creará un archivo por día, y en caso de existir, adiciona al final cada bloque de mensajes $arch = fopen($xcarpetaLogs."logs_".date("Y-m-d").".txt", "a+"); fwrite($arch, $xcadenota); fclose($arch); // if ($xlast_error) { $arch_error = fopen($xcarpetaErrs."errors_".date("Y-m-d").".txt", "a+"); fwrite($arch_error, $xcadenota); fclose($arch_error); // Despliega el error en la ventana del navegador echo "<br><font face='Verdana, Arial, Helvetica, sans-serif' size='2' color='#FF0000'><b>".$xlast_error."</b></font><br>"; echo "<font face='Verdana, Arial, Helvetica, sans-serif' size='2' color='#FF0000'>".$xtransaccion_old."</font><br>"; } // ENDIF return $xresult_sql; } // END FUNCTION ?>
Donde consigo o cual es la ruta de lib_database.php en mi caso utilizo xampp 1.7.4
ResponderEliminarEl archivo lib_database.php es la función que debes escribir (copiar y pegar) y entonces debes cargarla con include en todos tus programas que hacen una conexión con la base de datos.
ResponderEliminar<?php // Archivo lib_database.php
$xconn_host = '127.0.0.1';
$xconn_port = '5432';
$xconn_name = 'prueba_db';
$xconn_user = 'www_prueba';
$xconn_pwd = 'pwdprueba';
...