Spanish [SOLUCIONADO] Como hacer un fichero de traza

Discussion in 'Spanish Forum' started by cas6678, Oct 5, 2015.

  1. cas6678

    cas6678 Active Member Licensed User

    Jesus,

    Siguiendo tu sugerencia abro el post para que indiques como hacer este fichero de traza y poder encontrar los errores.

    Gracias de antemano.
     
  2. bgsoft

    bgsoft Well-Known Member Licensed User

    Hola

    Si, como te comenté en el otro post no tiene nada, a veces las cosas simples son las que mejores funcionan. Yo tengo este sub en un modulo de codigo y es publico, y cuando quiero hacer un seguimiento a algo que como en tu caso te genera un error aleatorio lo empleo. De esa forma no tengo que estar pendiente todo el tiempo por que a veces serian horas para esperar que suceda el error.

    Si haces muchas llamadas a la traza desde diferentes sitios y no quieres ir uno por uno comentandola, es tan facil como poner un return en el sub y asi deja de grabar.

    Code:
    Public Sub GrabarTraza (Texto As String)

    Dim DirFile As String
    Dim T_F As String

    ' Return ' si lo descomentas te vale para dejar de grabar sin tener que comentar las llamadas

    DirFile = 
    File.DirDefaultExternal ' o la carpeta que quieras

    T_F= 
    ""
    If File.Exists(DirFile, "Traza.txt"Then
      T_F=
    File.GetText(DirFile, "Traza.txt")    
    End If

    Dim FechaIn As Long
    FechaIn = 
    DateTime.Now
    tmp=  
    NumberFormat(DateTime.GetDayOfMonth(FechaIn),2,0) & "-" & NumberFormat(DateTime.GetMonth(FechaIn),2,0) & "-" & DateTime.GetYear(FechaIn)
    tmp = tmp & 
    " - " &  NumberFormat(DateTime.GetHour(FechaIn),2,0) & ":" & NumberFormat(DateTime.GetMinute(FechaIn),2,0) & ":" & NumberFormat(DateTime.GetSecond(FechaIn),2,0)   

    T_F = tmp & 
    CRLF & Texto & CRLF & T_F 

    File.WriteString (DirFile,"Traza.txt", T_F)


    End Sub
    Espero que con esto consigas saber donde esta el error de tu otro post

    saludos
     
    Last edited: Oct 6, 2015
    Glitchs likes this.
  3. cas6678

    cas6678 Active Member Licensed User

    Muchas gracias, voy a intentar ponerlo en marcha y ya os contare
     
  4. cas6678

    cas6678 Active Member Licensed User

    Hola otra vez.

    El tema que dio origen al fichero de traza ya estaba resuelto pero me quede con este sistema porque realmente es muy util para poder hacer una "auditoria" de lo que va pasando cuando no podemos ver ;)

    A raiz de esto me surge una duda. Lo que hace este fichero de traza es leer el txt y volver a grabarlo entero sumandole un nuevo dato. Si las llamadas a este fichero son muchas, por ejemplo 4 por segundo, cuando se puede convertir por tamaño en un problema que demore al propio programa?

    Saludos.
     
  5. bgsoft

    bgsoft Well-Known Member Licensed User

    Hola

    Como esto es para pruebas, no para dejar fijo en la aplicación, por lo tanto estas probando en un dispositivo concreto, asi que tu mejor que nadie veras cuando el fichero pesa mucho, por que va a depender te que amplitud de texto grabes cada vez.
    Una forma muy facil es comprobar el tamaño (File.Size) y cuando tu lo creas conveniente creas uno nuevo renombrando el anterior.

    El código original quedaria como te lo escribo mas abajo, he añadido un nuevo sub donde cojo la fecha y hora para asi cuando mires el directorio veras de un golpe rápido de vista cuales son. Puedes cambiar el formato de fecha como mas te guste o cambiarlo por un contador, creas una variable global, incrementas el contador y luego grabas. El problema es que cada vez que inicies la aplicacion el contador estará a 0, a menos que lo guardes en un fichero, de esta forma siempre sabras a que dia pertenece la traza sin abrir el fichero y no habrá repetición de fichero.

    Code:
    Public Sub GrabarTraza (Texto As String)

    Dim DirFile As String
    Dim T_F As String

    ' Return ' si lo descomentas te vale para dejar de grabar sin tener que comentar las llamadas

    DirFile = 
    File.DirDefaultExternal ' o la carpeta que quieras

    T_F= 
    ""
    If File.Exists(DirFile, "Traza.txt"Then
      
    if File.Size(DirFile, "Traza.txt") > LoQuetuQuierasEnBytes then ' pon el valor que tu creas para crear un nuevo fichero, acuerdarte que lo devuelve en bytes
        File.Copy(DirFile, "Traza.txt", DirFile, CogerFechaHora & "_Traza.txt"' se copia el antiguo con fecha actual yyyymmddhhmmss
        File.Delete(DirFile, "Traza.txt"' se borra el antiguo 
      else
        T_F=
    File.GetText(DirFile, "Traza.txt")
      
    end if
      
    End If

    Dim FechaIn As Long
    FechaIn = 
    DateTime.Now
    tmp=  
    NumberFormat(DateTime.GetDayOfMonth(FechaIn),2,0) & "-" & NumberFormat(DateTime.GetMonth(FechaIn),2,0) & "-" & DateTime.GetYear(FechaIn)
    tmp = tmp & 
    " - " &  NumberFormat(DateTime.GetHour(FechaIn),2,0) & ":" & NumberFormat(DateTime.GetMinute(FechaIn),2,0) & ":" & NumberFormat(DateTime.GetSecond(FechaIn),2,0

    T_F = tmp & 
    CRLF & Texto & CRLF & T_F

    File.WriteString (DirFile,"Traza.txt", T_F)


    End Sub



    Public Sub CogerFechaHora() As String
    ' en formato yyyymmddhhmmss
    Dim Fecha, Hora, FH As String
    Dim FechaIn As Long

    FechaIn = 
    DateTime.Now

    Fecha =
    DateTime.GetYear(FechaIn) & NumberFormat(DateTime.GetMonth(FechaIn),2,0) & NumberFormat(DateTime.GetDayOfMonth(FechaIn),2,0)
    Hora = 
    NumberFormat(DateTime.GetHour(FechaIn),2,0) & NumberFormat(DateTime.GetMinute(FechaIn),2,0) & NumberFormat(DateTime.GetSecond(FechaIn),2,0)

    FH= Fecha & Hora

    Return FH
    End Sub

    Saludos
     
    clarionero likes this.
  6. cas6678

    cas6678 Active Member Licensed User

    Una cosa mas que se....

    muchas gracias.
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice