• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Tutorial] Sistema simple de Log's
#1
Buenas comunidad de Burgershot, hoy les vengo a compartir un sistema de log's simple pero efectivo que casi siempre utilizo en la creaci?n de alg?n gamemode y as? tener mejor controlado lo que sucede dentro del servidor cuando no me encuentro en ?l. Todo lo explicar? paso por paso en el c?digo, creo que es la forma m?s efectiva de entenderlo, as? que empecemos:



PHP Code:
stock Log(const nombre[], const texto[]){ // Primero definimos la funci?n que utilizaremos para guardar los Logs, en este caso "Log(nombre[], texto[])"



? ? ? /* Los par?metros son muy sencillos, "nombre" es el nombre del archivo en el que guardaremos los logs,

? ? ? se puede utilizar tambi?n para separar cada archivo y as? poder tener varios archivos con distintos tipos de

? ? ? logs, como login, registro, uso de comandos administrativos, kicks, bans, etc. y "texto" es lo que guardaremos

? ? ? en el archivo, es decir, el suceso.?*/



? ? ??new dir[32], File:arctxt[256]; // dir es el directorio donde guardaremos nuestros logs, arc nuestra variable de archivo y txt[] un string que necesitaremos para dar formato

? ? ??new log_Dlog_Mlog_A// Las variables log guardar?n la fecha y hora de los sucesos. Cada inicial representa su contenido, D(ia) - M(es) - A(?o)

? ? ??new log_Seglog_Minlog_Hor// Misma explicaci?n que antes pero ahora con hora, minutos y segundos



? ? ??getdate(log_Alog_Mlog_D); // Con esta funci?n obtenemos la fecha actual?y la almacenamos en sus respectivas variables declaradas anteriormente

? ? ??gettime(log_Horlog_Minlog_Seg); // Misma explicaci?n que antes pero ahora obteniendo la hora actual



? ? ??format(dirsizeof(dir), "/Logs/%s.log"nombre); // Ac? especificamos d?nde guardaremos los logs, en este caso, en /scriptfiles/Logs/. como dije anteriormente, la constante nombre tendr? el nombre ? ? ??? ? del archivo

? ? ??format(txtsizeof(txt), "[%02d/%02d/%d|%02d:%02d:%02d] %s\r\n"log_Dlog_Mlog_A,

? ? ??
log_Horlog_Minlog_Segtexto); // ac? procedemos a dar formato:



? ? ? /* txt es la variable donde se guardar? la l?nea que se escribir? en el archivo del log, yo la puse con el siguiente formato:

? ? ? "[DD/MM/AAA|HH:MM:SS] Texto a guardar en el archivo" - el "%02d" es utilizado para 'rellenar' por as? decirlo el n?mero

? ? ? entero que ser?a conformado por un solo d?gito, haciendo que sean dos, por ejemplo: en vez de que la fecha quede de

? ? ? esta manera: "3/4/2019" quedar?a as? "03/04/2019", dando un mejor aspecto al lector. "%s" es la constante texto, la l?nea

? ? ? que se guardar? en nuestro archivo?*/



if(!fexist(dir)) // Si el archivo no existe en el directorio entonces...

? ? ??arc fopen(dirio_write); // se genera un nuevo archivo utilizando io_write con el nombre especificado en los par?metros

else // pero si ya existe...

? ? ??arc fopen(dirio_append); // se abre el archivo y?simplemente a?adiremos una nueva l?nea a ese archivo utilizando io_append



? ? ??printf("? [LOG : %s] %s"nombretexto); // Aqu? simplemente mostramos el log por consola tambi?n...

? ? ??fwrite(arctxt); // Escribimos en nuestro archivo la variable texto a la cual le dimos formato anteriormente

? ? ??fclose(arc); // Ac? se cierra el archivo, muy importante que cada vez que se abre un archivo sea para lectura y/o escritura este sea cerrado

? ? ??return 1;





Y con eso, para guardar un evento en nuestro servidor simplemente tendr?amos que invocar a la funci?n de esta manera:



PHP Code:
new string[128], nombre[MAX_PLAYER_NAME];

GetPlayerName(playeridnombresizeof(nombre));

format(stringsizeof(string), "%s ha entrado en el servidor"nombre);

Log("login"string); 



Lo cual generar?a un archivo de texto llamado "login.txt" que tendr?a una l?nea similar a esta:



PHP Code:
[21/04/2019|01:08:50Screw ha entrado en el servidor 



Tambi?n se puede utilizar para guardar eventos de comandos importantes y delicados en los servidores, por ejemplo, si un administrador en un servidor roleplay da dinero, si un usuario es kickeado, baneado, etc. siempre son informes clave a la hora de tomar decisiones.



Como especifiqu? en el t?tulo, es un sistema simple pero efectivo, funciona y espero que le sea de ayuda o aprendizaje para alguien.

Un saludo!
  Reply
#2
Buena gu?a! Se agradece.
  Reply
#3
Lo has sacado de la Vieja ZenonCity hombre.
  Reply


Forum Jump: