#include "StdAfx.h" #include "_log.h" #include "_error.h" #include "_app.h" //*********************************************************************** C_log::C_log(void) { nombre[0]=0; path[0]=0; archivo_log=-1; log_ext=NULL; l_lisener=NULL; } //*********************************************************************** C_log::~C_log(void) { } //*********************************************************************** void C_log::loguea(__time64_t tiemp, char *modulo, char *fmt) { char nfile[256], str[2048]; int k; char mod[31]; CTime tiempo; OFSTRUCT sarchivo; CString texto; char tiem[20]; if (log_ext) log_ext(tiemp,modulo,fmt); if (l_lisener) l_lisener->log_ext(tiemp,modulo,fmt); if (!nombre[0]) return; cerrojo.entro(); //****************************** //TODO /*va_start(arg_ptr, fmt); _vsnprintf(buf,4090, fmt, arg_ptr); va_end(arg_ptr);*/ texto = fmt; tiempo = CTime::GetCurrentTime(); // Actualizar el fichero de LOG //EnterCriticalSection(&sincro); if (archivo_log < 0) { // Abrir fichero de LOG nb=0; if(path[0]) sprintf (nfile, "%s\\%s_%04ld_%02ld_%02ld_h%02ld.log", path,nombre, tiempo.GetYear(),tiempo.GetMonth(),tiempo.GetDay(),tiempo.GetHour()); else sprintf (nfile, "%s_%04ld_%02ld_%02ld_h%02ld.log", nombre, tiempo.GetYear(),tiempo.GetMonth(),tiempo.GetDay(),tiempo.GetHour()); archivo_log = OpenFile( nfile, &sarchivo, OF_EXIST); if ( archivo_log != -1) { archivo_log = OpenFile( nfile, &sarchivo, OF_WRITE); SetFilePointer((HANDLE) (__int64) archivo_log,0,0,FILE_END); } else { archivo_log = OpenFile( nfile, &sarchivo, OF_CREATE); } } if (archivo_log >= 0) { k = (int) strlen(texto); int max = 2048 - 128; if (k > (2048 - 128)) texto.SetAt(2048 - 128,0); int st=(int)strlen(modulo); for (int i=0; i<30; i++) { if (i52428800)//mallor de 50 megas { strcpy(str,"Cierre de archivo, se creara uno nuevo para logear\r\n"); _lwrite(archivo_log,str,(int)strlen(str)); k = GetFileSize ((HANDLE) (__int64) archivo_log, NULL); if (k > 200) { _lclose(archivo_log); archivo_log = -1; } } } else path[0]=0; cerrojo.salgo(); } //*********************************************************************** void C_log::loguea( char *modulo, char *fmt ) { loguea(_time64(NULL),modulo,fmt); } //*********************************************************************** void C_log::loguea( C_error *er ) { loguea(_time64(NULL),er->modulo,er->msg); } //*********************************************************************** void C_log::log( char *modulo, char *fmt,... ) { if (C_app::GetApp()) { char buf[1024]; int k; va_list arg_ptr; va_start(arg_ptr, fmt); k = _vsnprintf(buf, 1020, fmt, arg_ptr); va_end(arg_ptr); if (k<0) strcpy(&buf[1020], "..."); C_app::GetApp()->log.loguea(modulo, buf); } } //*********************************************************************** void C_log::log( C_error *er ) { if (C_app::GetApp()) { C_app::GetApp()->log.loguea(_time64(NULL),er->modulo,er->msg); } } //***********************************************************************