Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com

Inicio

 
4D v19
Descripción de archivos de historial

Descripción de archivos de historial  


 

 

Las aplicaciones 4D pueden generar varios archivos de historial que son útiles para depurar u optimizar su ejecución. Los registros se suelen iniciar o detener utilizando los selectores de los comandos SET DATABASE PARAMETER o WEB SET OPTION y se almacenan en la carpeta Logs de la base (ver la sección Descripción de los archivos de 4D).

La información registrada necesita ser analizada para detectar y solucionar problemas. Este anexo ofrece una descripción completa de los siguientes archivos de historial:

  • 4DRequestsLog.txt
  • 4DRequestsLog_ProcessInfo.txt
  • HTTPDebugLog.txt
  • 4DDebugLog.txt (estándar y tabular)
  • 4DIMAPLog.txt, 4DPOP3Log.txt, y 4DSMTPLog.txt
  • 4DPOP3Log.txt
  • 4DSMTPLog.txt
  • Registro de peticiones clientes ORDA

Nota: cuando se puede generar un archivo de registro en 4D Server o en el cliente remoto, se añade la palabra "Server" al nombre del archivo de registro del lado del servidor, por ejemplo "4DRequestsLogServer.txt"

Estos archivos de historial comparten algunos campos para que pueda establecer una cronología y establecer conexiones entre entradas durante la depuración:

  • sequence_number: este número es único en todos los archivos de historial de depuración y se incrementa para cada nueva entrada, independientemente del archivo de historial, para que pueda conocer la secuencia exacta de las operaciones.
  • connection_uuid: para cada proceso 4D creado en un cliente 4D que se conecta a un servidor, este UUID de conexión se registra tanto en el servidor como en el cliente. Le permite identificar fácilmente el cliente remoto que lanzó cada proceso.

Este archivo de historial registra las búsquedas estándar realizadas por la máquina 4D Server o la máquina remota 4D que ejecutó el comando (excluyendo las búsquedas Web).

Cómo iniciar este historial:

  • En el servidor:
     SET DATABASE PARAMETER(4D Server log recording;1) //del lado del servidor
  • En un cliente:
     SET DATABASE PARAMETER(Client Log Recording;1) //del lado remoto

Nota: esta instrucción también inicia el archivo de historial 4DRequestsLog_ProcessInfo.txt (ver abajo).

Encabezados

Este archivo comienza con los siguientes encabezados:

  • Identificador de sesión de historial
  • Nombre de host del servidor que aloja la aplicación
  • Nombre de inicio de sesión de usuario: inicia sesión en el sistema operativo del usuario que ejecutó la aplicación 4D en el servidor.        

Contenido

Para cada petición, se registran los siguientes campos:

Nombre de campoDescripción
sequence_numberNúmero de operación único y secuencial en la sesión de registro
timeFecha y hora usando el formato ISO 8601: 'YYYY-MM-DDTHH:MM:SS.mmm'
systemidSystem ID
componentFirma de componente (por ejemplo, '4SQLS' o 'dbmg')
process_info_indexCorresponde al campo "índice" del historial 4DRequestsLog_ProcessInfo.txt log, y permite vincular una solicitud a un proceso.
requestSolicita ID en C/S o cadena de mensajes para peticiones SQL o mensajes LOG EVENT
bytes_inNúmero de bytes recibidos
bytes_outNúmero de bytes enviados
server_duration | exec_duration Depende de dónde se genere el historial:
  • cuando se genera en el cliente - Tiempo tomado en microsegundos para que el servidor procese la solicitud y devuelva una respuesta. De B ​​a F en la imagen a continuación,
    OR,
  • exec_duration cuando se genera en el servidor: el tiempo se toma en microsegundos para que el servidor procese la solicitud. B a E en la imagen a continuación.
write_durationTiempo tomado en milisegundos para enviar la petición:
  • Request (cuando se ejecuta en el cliente). A a B en imagen abajo.
  • Respuesta (cuando se ejecuta en el servidor). E a F en imagen abajo.
task_kindApropiativo o cooperativo (respectivamente 'p' o 'c')
rttTiempo estimado en microsegundos para que el cliente envíe la solicitud y el servidor la reconozca. A a D y E a H en la imagen a continuación.
  • Solo se mide cuando se utiliza la capa de red ServerNet, devuelve 0 cuando se utiliza con la capa de red heredada.
  • Para versiones de Windows anteriores a Windows 10 o Windows Server 2016, la llamada devolverá 0.

Flujo de petición:

 

Este archivo de historial registra la información sobre cada proceso creado en la máquina 4D Server o la máquina 4D remota que ejecutó el comando (excluyendo las solicitudes Web).

Cómo iniciar este archivo de historial:

  • En el servidor:
     SET DATABASE PARAMETER(4D Server log recording;1) //del lado del servidor
  • En un cliente:
     SET DATABASE PARAMETER(Client Log Recording;1) //del lado remoto

Nota: esta instrucción también inicia el archivo de historial 4DRequestsLog.txt (ver arriba).

Encabezados
Este archivo comienza con los siguientes encabezados:

  • Log Session Identifier (Identificador de sesión de historial)
  • Nombre del servidor que aloja la aplicación
  • User Login Name: nombre del usuario (definido en el SO) que ejecuta la aplicación 4D en el servidor.  

Contenido del archivo

Para cada proceso, los siguientes campos se registran:

Nombre del campoDescripción
sequence_numberNúmero de operación secuencial y único en la sesión de historial
timeFecha y hora utilizando el formato ISO 8601 "YYYY-MM-DDTHH:MM:SS.mmm"
process_info_indexNúmero de proceso secuencial y único
CDB4DBaseContextUUID del contexto de base del componente DB4D
systemidID sistema
server_process_idID del proceso en el servidor
remote_process_idID del proceso en el cliente
process_nameNombre del proceso
cIDIdentificador de la conexión 4
uIDIdentificador del cliente 4D
IPDirección IPv4/IP v6 del cliente
host_nameNombre del host del cliente
user_nameNombre de conexión de usuario en el cliente
connection_uuidIdentificador UUID de proceso de conexión
server_process_unique_idID único del proceso en el servidor


Este archivo de historial registra cada solicitud HTTP y cada respuesta en modo crudo. La totalidad de las peticiones, incluidos los encabezados, se registran; Opcionalmente, se pueden registrar también las partes del cuerpo.

Cómo iniciar este registro:

 WEB SET OPTION(Web debug log;wdl enable without body//otros valores están disponibles

Los siguientes campos se registran para las peticiones y las respuestas:

Nombre del campoDescripción
SocketIDID del socket utilizado para la comunicación
PeerIPDirección IPv4 del host (cliente)
PeerPortPuerto utilizado por el host (cliente)
TimeStampTimestamp en milisegundos (desde el inicio del sistema)
ConnectionIDUUID de la conexión (UUID de VTCPSocket utilizado para la comunicación)
SequenceNumberNúmero de operación secuencial y único en la sesión de historial

Este archivo de historial registra cada evento que ocurre al nivel del lenguaje de 4D. El modo estándar ofrece una vista básica de los eventos.

Cómo iniciar este archivo de historial:

 SET DATABASE PARAMETER(Debug Log Recording;2) //estándar, todos los procesos
 SET DATABASE PARAMETER(Current process debug log recording;2) //estándar, proceso actual únicamente

Los siguientes campos se registran para cada evento: 

Columna #Descripción
1Número de operación secuencial y único en la sesión de historial
2Fecha y hora en formato ISO 8601 (YYYY-MM-DDThh:mm:ss.mmm)
3ID proceso (p=xx) e ID único del proceso (puid=xx)
4Nivel de pila
5Puede ser Nombre de comando/Nombre de método/Mensaje/Info Task Start Stop /Nombre del Plugin, evento o retrollamada/UUID de la conexión
6Tiempo necesario para la operación en el historial en milisegundos

Este archivo de historial registra cada evento generado a nivel del lenguaje de 4D en un formato tabulado y compacto que incluye información adicional (en comparación con el formato estándar).

Cómo iniciar este archivo de historial:

 SET DATABASE PARAMETER(Debug Log Recording;2+4) //formato tabular extendido, todos los procesos
 SET DATABASE PARAMETER(Current process debug log recording;2+4) //extendido, proceso actual únicamente

Los siguientes campos se registran para cada evento:

Columna #Nombre del campoDescripción
1sequence_numberNúmero de operación secuencial y único en la sesión de historial
2timeFecha y hora en formato ISO 8601 (YYYY-MM-DDThh:mm:ss.mmm)
3processIDID del proceso
4unique_processIDID único del proceso
5stack_levelNivel de pila
6operation_typeTipo de operación de registro. Este valor puede ser un valor absoluto:
1: Comando
2: Método (método proyecto, método base, etc.)
3: Mensaje (enviado por el comando LOG EVENT únicamente)
4: PluginMessage
5: PluginEvent
6: PluginCommand
7: PluginCallback
8: Task
9: Método miembro (método adjunto a una colección o a un objeto)
Al cerrar un nivel de pila, las columnas operation_type, operation y operation_parameters tienen el mismo valor que el nivel de pila de apertura registrado en la columna stack_opening_sequence_number. Por ejemplo: 
121  15:16:50:777  5  8  1  2 CallMethod Parameters 0
122  15:16:50:777  5  8  2  1 283  0
123  15:16:50:777  5  8  2  1 283  0 122 3
124  15:16:50:777  5  8  1  2 CallMethod Parameters 0 121 61
Las líneas 1 y 2 abren un nivel de pila, las líneas 3 y 4 cierran un nivel de pila. Los valores de las columnas 6, 7 y 8 se repiten en la línea de cierre del nivel de pila. La columna 10 contiene los números de secuencia de apertura del nivel de pila, es decir, 122 para la 3ª línea y 121 para la 4ª. 
7operationPuede representar (dependiendo del tipo operación):
  • un ID de comando del lenguaje (cuando el tipo=1)
  • un nombre de método (cuando el tipo=2)
  • una combinación de pluginIndex;pluginCommand (cuando el tipo=4, 5, 6 o 7). Puede contener algo como '3;2'
  • un UUID Task Connection (cuando el tipo=8)
  • 8operation_parametersParámetros pasados ​​a los comandos, métodos o plugins
    9form_eventEvento formulario si lo hay; Vacío en otros casos (suponga que la columna se utiliza cuando el código se ejecuta en un método formulario u objeto)
    10stack_opening_sequence_numberSólo para los niveles de pila de cierre: número de secuencia del nivel de pila de apertura correspondiente
    11stack_level_execution_timeSólo para los niveles de cierre de pila: Tiempo transcurrido en micro segundos de la acción registrada actual (ver las últimas columnas en las líneas 123 y 124 en el historial arriba)

    Este archivo de registro registra muchos eventos relacionados con el funcionamiento interno de la aplicación y es legible para los humanos. Puede incluir información personalizada en este archivo utilizando el comando LOG EVENT.

    Cómo iniciar este registro:

     SET DATABASE PARAMETER(Diagnostic log recording;1) //iniciar el registro

    Los siguientes campos se registran para cada evento:

    Nombre de los camposDescripción
    sequenceNumberNúmero de operación único y secuencial en la sesión de registro
    timestampFecha y hora en formato ISO 8601 (YYYY-MM-DDThh:mm:ss.mmm)
    loggerIDOpcional
    componentSignatureOpcional - firma interna del componente
    messageLevelInformación, Advertencia, Error
    messageDescripción de la entrada de registro

    Dependiendo del evento, también se pueden registrar otros campos, como la tarea, el socket, etc.

    Este archivo de historial registra cada intercambio entre la aplicación 4D y el servidor de correo (SMTP, POP3, IMAP) que se ha sido iniciado por lo siguientes comandos:

    Los archivos de historial pueden producirse en dos versiones:

    • una versión normal:
      • llamada 4DSMTPLog.txt, 4DPOP3Log.txt, o 4DIMAPLog.txt
      • sin archivos adjuntos
      • utiliza un reciclaje automático de archivos circular cada 10 MB
      • destinado a la depuración habitual

    Para iniciar este historial:

      •  SET DATABASE PARAMETER(SMTP Log;1) //iniciar el historial SMTP OR
         SET DATABASE PARAMETER(POP3 Log;1) //iniciar el historial POP3 OR
         SET DATABASE PARAMETER(IMAP Log;1) //iniciar el historial IMAP

         
      • Servidor 4D: haga clic en el botón Iniciar petición y archivos de depuración en Página Mantenimiento de la ventana de administración de 4D Server.
        Esta ruta de historial es devuelta por el comando Get 4D file.
               
    • una versión extendida:
      • archivo(s) adjunto(s) incluido(s)
      • no hay reciclaje automático
      • nombre personalizado
      • reservado para fines específicos
          

    Para iniciar este historial:

      •  $server:=New object
         ...
          //SMTP
         $server.logFile:="MySMTPAuthLog.txt"
         $transporter:=SMTP New transporter($server)
         
          // POP3
         $server.logFile:="MyPOP3AuthLog.txt"
         $transporter:=POP3 New transporter($server)
         
          //IMAP
         $server.logFile:="MyIMAPAuthLog.txt"
         $transporter:=IMAP New transporter($server)

    Contenidos

    Para cada petición, se registran los siguientes campos:

    Columna #Descripción
    1Número de operación único y secuencial en la sesión de registro
    2Fecha y hora en formato RFC3339 (aaaa-mm-ddThh:mm:ss.ms)
    3ID de proceso 4D
    4ID de proceso único
    5
    • Información de inicio de sesión SMTP, POP3, o IMAP, incluyendo el nombre del host servidor, el número de puerto TCP utilizado para conectarse al SMTP, POP3, o servidor IMAP y el estado TLS,
      o
    datos intercambiados entre el servidor y el cliente, comenzando por "S <" (datos recibidos del SMTP, POP3, o servidor IMAP) o "C >" (datos enviados por el cliente IMAP): lista de modo de autenticación enviada por el servidor y modo de autenticación seleccionado, todo error informado por el SMTP,POP3, o servidor IMAP, la información del encabezado del correo enviado (solo la versión estándar) y si el correo se guarda en el servidor,
    or
  • información de cierre de la sesión IMAP.
  • Este registro registra cada solicitud ORDA enviada desde una máquina remota. Puede enviarlo a la memoria o a un archivo en el disco. El nombre y la ubicación de este archivo de registro son su elección.

    Cómo iniciar este registro:

      //para ser ejecutado en una máquina remota
     ds.startRequestLog(File("/LOGS/ordaLog.txt")) //también se puede enviar a la memoria

    Nota: si desea utilizar el número de secuencia único en el registro de solicitud de ORDA, debe activarlo:

      //para ser ejecutado en una máquina remota
     SET DATABASE PARAMETER(Client Log Recording;1) //para habilitar el número de secuencia de registro
     ds.startRequestLog(File("/LOGS/ordaLog.txt")) //también se puede enviar a la memoria
     SET DATABASE PARAMETER(Client Log Recording;0) //deshabilitar el número de secuencia

    Los siguientes campos se registran para cada petición:

    Nombre del campoDescripciónEjemplo
    sequenceNumberNúmero de operación único y secuencial en la sesión de registro104
    urlURL de petición ORDA del cliente"rest/Persons(30001)"
    startTimeFecha y hora de inicio con el formato ISO 8601"2019-05-28T08:25:12.346Z"
    endTimeFecha y hora de finalización utilizando el formato ISO 8601"2019-05-28T08:25:12.371Z"
    durationDuración de procesamiento del cliente (ms)25
    responseObjeto de respuesta del servidor{"status":200,"body":{"__entityModel":"Persons",[...]

     
    PROPIEDADES 

    Producto: 4D
    Tema: Archivos de depuración

     
    CONTENIDO DE LA PÁGINA 
     
    HISTORIA 

    New
    Modificado: 4D v17 R5
    Modificado: 4D v17 R6
    Modificado: 4D v18 R2
    Modificado: 4D v18 R3
    Modificado: 4D v19

     
    ARTICLE USAGE

    Manual de Diseño ( 4D v19)