Saltar al contenido principal
Versión: 20

Descripción de los archivos históricos

Las aplicaciones 4D pueden generar varios archivos de historial que son útiles para depurar u optimizar su ejecución. Los historiales suelen iniciarse o detenerse utilizando los selectores de los comandos SET DATABASE PARAMETER, WEB SET OPTION o HTTP SET OPTION y se almacenan en la carpeta Logs folder del proyecto.

La información histórica debe ser analizada para detectar y solucionar los problemas. Esta sección ofrece una descripción completa de los siguientes archivos de registro:

Cuando un archivo de historial puede generarse tanto en 4D Server como en el cliente remoto, se añade la palabra "Server" al nombre del archivo de historial del lado del servidor, por ejemplo "4DRequestsLogServer.txt"

Los archivos de historial comparten algunos campos para que pueda establecer una cronología y hacer conexiones entre las entradas mientras depura:

  • sequence_number: este número es único en todos los registros de depuración y se incrementa para cada nueva entrada cualquiera que sea el 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 conecte a un servidor, este UUID de conexión se registra tanto del lado del servidor como del cliente. Permite identificar fácilmente el cliente remoto que lanzó cada proceso.

4DRequestsLog.txt

Este archivo de historial registra las solicitudes estándar llevadas a cabo por la máquina 4D Server o la máquina remota 4D que ejecutó el comando (excluyendo las solicitudes web).

Como 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

Esta instrucción también inicia el archivo de historial 4DRequestsLog_ProcessInfo.txt.

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
  • Nombre de usuario: nombre de usuario en el sistema operativo que ejecutó la aplicación 4D en el servidor.

Contenido

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

Nombre del campoDescripción
sequence_numberNúmero de operación único y secuencial en la sesión de historial
timeFecha y hora utilizando el formato ISO 8601: 'YYYY-MM-DDTHH:MM:SS.mmm'
systemidID del sistema
componentFirma del componente (por ejemplo, "4SQLS" o "dbmg")
process_info_indexCorresponde al campo "index" en el archivo de historial 4DRequestsLog_ProcessInfo.txt, y permite vincular una petición a un proceso.
requestID de petición C/S u ORDA o cadena de mensaje para peticiones SQL o mensajes LOG EVENT
bytes_inNúmero de bytes recibidos
bytes_outNúmero de bytes enviados
server_duration | exec_durationDepende de dónde se genere el registro:
  • server_duration cuando se genera en el cliente --Tiempo que tarda el servidor en procesar la petición y devolver una respuesta en microsegundos. B a F en la imagen de abajo, O
  • exec_duration cuando se genera en el servidor --Tiempo en microsegundos que tarda el servidor en procesar la petición. B a E en la imagen de abajo.
  • write_durationTiempo de envío en microsegundos:
  • La petición (cuando se ejecuta en el cliente). A a B en la imagen de abajo.
  • Respuesta (cuando se ejecuta en el servidor). E a F en la imagen de 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 acuse de recibo. De la A a la D y de la E a la H en la imagen de abajo.
  • Sólo se mide cuando se utiliza la capa de red ServerNet, devuelve 0 cuando se utiliza con la capa de red heredada.
  • Para las versiones de Windows anteriores a Windows 10 o Windows Server 2016, la llamada devolverá 0.
  • extraInformación adicional relacionada con el contexto, por ejemplo el nombre de la clase de datos y/o el nombre del atributo en caso de petición ORDA

    Flujo de solicitudes:

    4DRequestsLog_ProcessInfo.txt

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

    Como iniciar este historial:

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

    Esta instrucción también inicia el archivo de historial 4DRequestsLog.txt.

    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
    • Nombre de usuario: nombre de usuario en el sistema operativo que ejecutó la aplicación 4D en el servidor.

    Contenido

    Para cada proceso, se registran los siguientes campos:

    Nombre del campoDescripción
    sequence_numberNúmero de operación único y secuencial 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 único y secuencial
    CDB4DBaseContextUUID del contexto de base del componente DB4D
    systemidID del 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 4D
    uIDIdentificador del cliente 4D
    IP ClientDirección IPv4/IPv6
    host_nameNombre de host del cliente
    user_nameNombre de conexión usuario en el cliente
    connection_uuidIdentificador UUID de proceso de conexión
    server_process_unique_idID único del proceso en el servidor

    HTTPDebugLog.txt

    Este archivo de historial registra cada petición HTTP y cada respuesta en modo bruto (raw). Se registran las solicitudes completas, incluidos los encabezados; opcionalmente, también se pueden registrar las partes del cuerpo.

    Como iniciar este historial:




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

    Los siguientes campos se registran tanto para la solicitud como para la respuesta:

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

    4DHTTPClientLog.txt

    Este archivo de historial registra el tráfico HTTP que pasa por el cliente HTTP de 4D. Se registran las peticiones y respuestas completas, incluidos los encabezados; opcionalmente, también se pueden registrar las partes del cuerpo.

    Como iniciar este historial:


    HTTP SET OPTION(HTTP client log; HTTP enable log with all body parts)
    //hay otros valores disponibles

    Los siguientes campos se registran tanto para la solicitud como para la respuesta:

    Nombre del campoDescripción
    SequenceIDNúmero de operación único y secuencial en la sesión de historial
    ConnectionIDIdentificador UUID de proceso de conexión
    LocalIPDirección IP del cliente
    PeerIPDirección IP del servidor
    TimeStampMarca de tiempo (ms) en el momento en que se envía la solicitud o se recibe completamente la respuesta
    ElapsedTimeInMs(sólo respuesta) Diferencia con la marca de tiempo de la petición

    Dependiendo de las opciones de historial, también se pueden registrar otros campos.

    • Para la petición: línea de petición, encabezados, cuerpo de la petición
    • Para respuesta: línea de estado, encabezados, cuerpo de la respuesta (sin comprimir), si lo hay

    4DDebugLog.txt (estándar)

    Este archivo de historial registra cada evento que se produce a nivel de programación 4D. El modo estándar ofrece una visión básica de los eventos.

    Como iniciar este historial:

    SET DATABASE PARAMETER(Debug Log Recording;2)  
    //estándar, todos los procesos

    SET DATABASE PARAMETER(Current process debug log recording;2)
    //estándar, sólo el proceso actual

    Los siguientes campos se registran para cada evento:

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

    4DDebugLog.txt (tabular)

    Este archivo de historial registra cada evento que se produce a nivel de programación 4D en un formato compacto y con tabulaciones que incluye información adicional (en comparación con el formato estándar).

    Como iniciar este 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, sólo el proceso actual

    Los siguientes campos se registran para cada evento:

    Columna #Nombre del campoDescripción
    1sequence_numberNúmero de operación único y secuencial en la sesión de historial
    2timeFecha y hora en el formato ISO 8601: (YYYY-MM-DDThh:mm:ss.mmm)
    3ProcessIDID del Proceso
    4unique_processIDID único del proceso
    5stack_levelNivel de stack
    6operation_typeTipo de operación histórico. Este valor puede ser un valor absoluto:

    1. Comando
    2. Método (método de proyecto, método base, etc.)
    3. Mensaje (enviado sólo por el comando LOG EVENT)
    4. PluginMessage
    5. PluginEvent
    6. PluginCommand
    7. PluginCallback
    8. Tarea
    9. Método miembro (método adjunto a una colección o a un objeto)

    Al cerrar un nivel de profundidad, 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:

    1. 121 15:16:50:777 5 8 1 2 CallMethod Parameters 0
    2. 122 15:16:50:777 5 8 2 1 283 0
    3. 123 15:16:50:777 5 8 2 1 283 0 122 3
    4. 124 15:16:50:777 5 8 1 2 CallMethod Parameters 0 121 61

    La primera y la segunda línea abren el nivel de la pila, la tercera y la cuarta lo cierran. Los valores de las columnas 6, 7 y 8 se repiten en la línea del nivel de pila de cierre. La columna 10 contiene los números de secuencia de apertura del nivel de pila, es decir, 122 para la tercera línea y 121 para la cuarta.
    7operationPuede representar (según el tipo de operación):
  • un ID de comando de lenguaje (cuando tipo=1)
  • un nombre de método (cuando tipo=2)
  • una combinación de pluginIndex;pluginCommand (cuando tipo=4, 5, 6 o 7). Puede contener algo como '3;2'
  • una UUID task connection (cuando tipo = 8)
  • 8operation_parametersParámetros pasados a comandos, métodos o plugins
    9form_eventEvento formulario si lo hay; vacío en otros casos (supongamos que la columna se utiliza cuando se ejecuta el código en un método formulario o en un método 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 cuando se cierra el nivel de la pila: el tiempo transcurrido en microsegundos de la acción registrada actualmente (ver la décima columna en las líneas 123 y 124 del registro anterior)

    4DDiagnosticLog.txt

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

    Como iniciar este historial:

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

    Los siguientes campos se registran para cada evento:

    Nombre del campoDescripción
    sequenceNumberNúmero de operación único y secuencial en la sesión de historial
    timestampFecha y hora en el formato ISO 8601: (YYYY-MM-DDThh:mm:ss.mmm)
    loggerIDOpcional
    componentSignatureOpcional - firma del componente interno
    messageLevelInformación, avisos, errores
    messageDescripción de la entrada del historial

    Dependiendo del evento, se pueden incluir otros campos en el registro, como la tarea, socket, etc.

    Cómo activar el archivo

    El archivo 4DDiagnosticLog.txt puede registrar diferentes niveles de mensajes, desde ERROR (más importante) a TRACE (menos importante). Por defecto, se define el nivel INFO, lo que significa que el archivo registrará sólo los eventos importantes, incluidos los errores y los resultados inesperados (ver más adelante).

    Puede seleccionar el nivel de los mensajes utilizando el selector de nivel de registro de diagnóstico del comando SET DATABASE PARAMETER, en función de sus necesidades. Cuando se selecciona un nivel, los niveles superiores (que son más importantes) también se seleccionan implícitamente. Los siguientes niveles están disponibles:

    ConstanteDescripciónCuando se selecciona, incluye
    Log errorUna parte de la aplicación no funcionaLog error
    Log warnPosible error, uso de una función obsoleta, usos deficientes, situación indeseable o inesperadaLog error, Log warn
    Log infoNivel por defecto - Evento de aplicación importanteLog error, Log warn, Log info
    Log debugDetalle del flujo de aplicación (para los servicios técnicos 4D)Log error, Log warn, Log info, Log debug
    Log traceOtra información interna (para los servicios técnicos de 4D)Log error, Log warn, Log info, Log debug, Log trace

    Ejemplo:

    SET DATABASE PARAMETER (Diagnostic log recording; 1)
    SET DATABASE PARAMETER (Diagnostic log level; Log trace)

    4DSMTPLog.txt, 4DPOP3Log.txt y 4DIMAPLog.txt

    Estos archivos de registro registran cada intercambio entre la aplicación 4D y el servidor de correo (SMTP, POP3, IMAP) que ha sido iniciado por los siguientes comandos:

    Los archivos de historial pueden producirse en dos versiones:

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

    Para iniciar este historial:

    SET DATABASE PARAMETER(SMTP Log;1) //iniciar log SMTP 
    SET DATABASE PARAMETER(POP3 Log;1) //iniciar log POP3
    SET DATABASE PARAMETER(IMAP Log;1) //iniciar log IMAP

    4D Server: clic en el botón Iniciar los historiales de peticiones y de depuración en la página Mantenimiento ode la ventana de administración de 4D Server.

    Esta ruta al historial es devuelta por el comando Get 4D file.

    • una versión extendida:
      • attachment(s) included no automatic recycling
      • nombre personalizado
      • reservado con 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)

    Contenido

    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 historial
    2Fecha y hora en el formato RFC3339 (yyyy-mm-ddThh:mm:ss.ms)
    3ID Proceso 4D
    4ID único del proceso
    5
    • Información de inicio de sesión SMTP, POP3 o IMAP, incluyendo el nombre del servidor, el número de puerto TCP utilizado para conectarse al servidor SMTP, POP3 o IMAP y el estado de TLS, o
    • datos intercambiados entre el servidor y el cliente, empezando por "S <" (datos recibidos del servidor SMTP,POP3 o IMAP) o "C >" (datos enviados por el cliente SMTP,POP3 o IMAP): lista de modos de autenticación enviada por el servidor y modo de autenticación seleccionado, cualquier error notificado por el servidor SMTP,POP3 o IMAP, información del encabezado del correo enviado (sólo versión estándar) y si el correo se guarda en el servidor, o
    • Información de cierre de sesión SMTP, POP3 o IMAP.

    Peticiones ORDA

    Los registros de peticiones ORDA pueden registrar cada petición ORDA y la respuesta del servidor. Existen dos registros de peticiones ORDA:

    • un registro de peticiones ORDA del lado del cliente, en formato .txt
    • un registro de peticiones ORDA del lado del servidor, en formato .jsonl

    Del lado del cliente

    El registro ORDA del lado del cliente registra cada petición ORDA enviada desde una máquina remota. Puede dirigir la información de registro a la memoria o a un archivo .txt en el disco de la máquina remota. El nombre y la ubicación de este archivo de registro son de su elección.

    Como iniciar este historial:

        //en una máquina remota
    SET DATABASE PARAMETER(Client Log Recording;1)
    ds.startRequestLog(File("/PACKAGE/Logs/ordaLog.txt"))
    //también se puede enviar a la memoria
    SET DATABASE PARAMETER(Client Log Recording;0)
    nota

    La activación del cliente 4DRequestsLog.txt utilianzdo SET DATABASE PARAMETER no es obligatoria. Sin embargo, es necesario si desea registrar el campo sequenceNumber único.

    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 historial104
    urlSolicitar URL"rest/Persons(30001)"
    startTimeFecha y hora de inicio en formato ISO 8601"2019-05-28T08:25:12.346Z"
    endTimeFecha y hora final en formato ISO 8601"2019-05-28T08:25:12.371Z"
    durationDuración del procesamiento del cliente en milisegundos (ms)25
    responseObjeto respuesta del servidor{"status":200,"body":{"__entityModel":"Persons",[...]}}

    Ejemplo

    Este es un ejemplo de un registro de archivo de historial ORDA del lado del cliente:

        {
    "sequenceNumber": 7880,
    "url": "rest/Employees/$entityset/F910C2E4A2EE6B43BBEE74A0A4F68E5A/Salary?$compute='sum'&$progress4Dinfo='D0706F1E77D4F24985BE4DDE9FFA1739'",
    "startTime": "2023-05-15T10:43:39.400Z",
    "endTime": "2023-05-15T10:43:39.419Z",
    "duration": 19,
    "response": {
    "status": 200,
    "body": 75651
    }
    }

    Del lado del servidor

    El registro ORDA del lado del servidor registra cada petición ORDA procesada por el servidor, así como la respuesta del servidor (opcional). La información de registro se guarda en un archivo .jsonl en el disco de la máquina del servidor (por defecto, ordaRequests.jsonl).

    Como iniciar este historial:

        //en el servidor
    SET DATABASE PARAMETER(4D Server log recording;1)
    ds.startRequestLog(File("/PACKAGE/Logs/ordaRequests.jsonl");srl log response without body)
    //srl... el parámetro es opcional
    SET DATABASE PARAMETER(4D Server log recording;0)
    nota

    La activación del lado del servidor 4DRequestsLog.txt utilianzdo SET DATABASE PARAMETER no es obligatoria. Sin embargo, es necesario si desea registrar los campos exclusivos sequenceNumber y duration.

    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 historial104
    urlSolicitar URL"rest/Persons(30001)"
    startTimeFecha y hora de inicio en formato ISO 8601"2019-05-28T08:25:12.346Z"
    durationDuración del procesamiento del servidor en microsegundos (µ)2500
    responseObjeto de respuesta del servidor, puede configurarse en .startRequestLog(){"status":200,"body":{"__entityModel":"Persons",[...]}}
    ipAddressDirección IP del usuario"192.168.1.5"
    userNameNombre del usuario 4D"henry"
    systemUserNameNombre de inicio de sesión del usuario en la máquina"hsmith"
    machineNameNombre de la máquina del usuario"PC of Henry Smith"

    Ejemplo

    Este es un ejemplo de un registro ORDA del lado del servidor:

       {
    "url": "rest/Employees/$entityset/F910C2E4A2EE6B43BBEE74A0A4F68E5A/Salary?$compute='sum'&$progress4Dinfo='D0706F1E77D4F24985BE4DDE9FFA1739'",
    "systemUserName": "Admin",
    "userName": "Designer",
    "machineName": "DESKTOP-QSK9738",
    "taskID": 5,
    "taskName": "P_1",
    "startTime": "2023-05-15T11:43:39.401",
    "response": {
    "status": 200,
    "body": 75651
    },
    "sequenceNumber": 7008,
    "duration": 240
    }

    Utilización de un archivo de configuración de log

    Puede utilizar un archivo de configuración de log para gestionar fácilmente el registro de los historiales en un entorno de producción. Este archivo está preconfigurado por el desarrollador. Normalmente, se puede enviar a los clientes para que sólo tengan que seleccionarlo o copiarlo en una carpeta local. Una vez activado, el archivo de configuración de log desencadena el registro de registros específicos.

    Cómo activar el archivo

    Hay varias maneras de activar el archivo de configuración de registro, dependiendo de su configuración:

    • 4D Server con interfaz: puede abrir la página de mantenimiento y hacer clic en el botón Cargar el archivo de configuración de logs y luego seleccionar el archivo. En este caso, puede utilizar cualquier nombre para el archivo de configuración. Se activa inmediatamente en el servidor.
    • un proyecto interpretado o compilado: el archivo debe llamarse logConfig.json y copiarse en la carpeta Settings del proyecto (situada al mismo nivel que la carpeta Project). Se activa al iniciar el proyecto (sólo en el servidor en cliente/servidor).
    • una aplicación construida: el archivo debe llamarse logConfig.json y copiarse en la siguiente carpeta:
      • Windows: Users\[userName]\AppData\Roaming\[application]
      • macOS: /Users/[userName]/Library/ApplicationSupport/[application]
    • todos los proyectos con un 4D autónomo o remoto: el archivo debe llamarse logConfig.json y copiarse en la siguiente carpeta:
      • Windows: Users\[userName]\AppData\Roaming\4D
      • macOS: /Users/[userName]/Library/ApplicationSupport/4D
    • todos los proyectos con 4D Server: el archivo debe llamarse logConfig.json y copiarse en la siguiente carpeta:
      • Windows: Users\[userName]\AppData\Roaming\4D Server
      • macOS: /Users/[userName]/Library/ApplicationSupport/4D Server
    nota

    Si se instala un archivo logConfig.json tanto en la carpeta Settings como en AppData/Library, el archivo de la carpeta Settings tendrá prioridad.

    Descripción del archivo JSON

    El archivo de configuración del registro es un archivo .json que debe cumplir con el siguiente esquema json:

    {
    "$schema": "http://json-schema.org/draft-07/schema",
    "title": "Logs Configuration File",
    "description": "A file that controls the state of different types of logs in 4D clients and servers",
    "type": "object",
    "properties": {
    "forceConfiguration": {
    "description": "Forcing the logs configuration described in the file ingoring changes coming from code or user interface",
    "type": "boolean",
    "default": true
    },
    "requestLogs": {
    "description": "Configuration for request logs",
    "type": "object",
    "properties": {
    "clientState": {
    "description": "Enable/Disable client request logs (from 0 to N)",
    "type": "integer",
    "minimum": 0
    },
    "serverState": {
    "description": "Enable/Disable server request logs (from 0 to N)",
    "type": "integer",
    "minimum": 0
    }
    }
    },
    "debugLogs": {
    "description": "Configuration for debug logs",
    "type": "object",
    "properties": {
    "commandList": {
    "description": "Commands to log or not log",
    "type": "array",
    "items": {
    "type": "string"
    },
    "minItems": 1,
    "uniqueItems": true
    },
    "state": {
    "description": "integer to specify type of debuglog and options",

    "type": "integer",
    "minimum": 0
    }
    }
    },
    "diagnosticLogs":{
    "description": "Configuration for debug logs",
    "type": "object",
    "properties": {
    "state":{
    "description": "Enable/Disable diagnostic logs 0 or 1 (0 = do not record, 1 = record)",
    "type": "integer",
    "minimum": 0
    },
    "level": {
    "description": "Configure diagnostic logs",
    "type": "integer",
    "minimum": 2,
    "maximum": 6
    }
    }
    },
    "httpDebugLogs": {
    "description": "Configuration for http debug logs",
    "type": "object",
    "properties": {
    "level": {
    "description": "Configure http request logs",
    "type": "integer",
    "minimum": 0,
    "maximum": 7
    },
    "state": {
    "description": "Enable/Disable recording of web requests",
    "type": "integer",
    "minimum": 0,
    "maximum": 4
    }
    }
    },
    "POP3Logs": {
    "description": "Configuration for POP3 logs",
    "type": "object",
    "properties": {
    "state": {
    "description": "Enable/Disable POP3 logs (from 0 to N)",
    "type": "integer",
    "minimum": 0
    }
    }
    },
    "SMTPLogs": {
    "description": "Configuration for SMTP logs",
    "type": "object",
    "properties": {
    "state": {
    "description": "Enable/Disable SMTP log recording (form 0 to N)",
    "type": "integer",
    "minimum": 0
    }
    }
    },
    "IMAPLogs": {
    "description": "Configuration for IMAP logs",
    "type": "object",
    "properties": {
    "state": {
    "description": "Enable/Disable IMAP log recording (form 0 to N)",
    "type": "integer"
    }
    }
    },
    "ORDALogs": {
    "description": "Configuration for ORDA logs",
    "type": "object",
    "properties": {
    "state": {
    "description": "Enable/Disable ORDA logs (0 or 1)",
    "type": "integer"
    },
    "filename": {
    "type": "string"
    }
    }
    }
    }
    }

    Ejemplo

    Este es un ejemplo de archivo de configuración de log:

    {
    "forceLoggingConfiguration": false,
    "requestLogs": {
    "clientState": 1,
    "serverState": 1
    },
    "debugLogs": {
    "commandList":["322","311","112"],
    "state": 4
    },
    "diagnosticLogs":{
    "state" : 1
    },
    "httpDebugLogs": {
    "level": 5,
    "state" : 1
    },
    "POP3Logs": {
    "state" : 1
    },
    "SMTPLogs": {
    "state" : 1
    },
    "IMAPLogs": {
    "state" : 1
    },
    "ORDALogs": {
    "state" : 1,
    "filename": "ORDALog.txt"
    }
    }