As aplicações 4D podem gerar vários arquivos de histórico que são úteis para depurar ou otimizar sua execução. Os registros geralmente são iniciados ou detidos utilizando os seletores dos comandos SET DATABASE PARAMETER ou WEB SET OPTION e são armazenados na pasta Logs do banco de dados (ver a seção Descrição dos Arquivos 4D).
A informação registrada necessita ser analizada para detectar e solucionar problemas. Este anexo oferece uma descrição completa dos arquivos de histórico abaixo:
- 4DRequestsLog.txt
- 4DRequestsLog_ProcessInfo.txt
- HTTPDebugLog.txt
- 4DDebugLog.txt
Estes arquivos de histórico compartem alguns campos para que possa estabelecer uma cronologia e estabelecer conexões entre entradas durante a depuração:
- sequence_number: este número é único em todos os registros de depuração e são incrementados para cada nova entrada, independentemente do arquivo de histórico, para que possa conhecer a sequência exata das operações.
- connection_uuid: para todo processo 4D criado em um cliente 4D que é conectada a um servidor, este UUID de conexão é registrada tanto no servidor como no cliente. Lhe permite identificar facilmente o cliente remoto que iniciou cada processo.
Este arquivo de histórico registra as pesquisas padrão realizadas pela máquina 4D Server ou a máquina remota 4D que executou o comando (excluindo as pesquisas Web).
Como iniciar este histórico:
Nota: esta instrução também inicia o arquivo de histórico 4DRequestsLog_ProcessInfo.txt (ver abaixo).
Cabeçalhos
Este arquivo começa com os cabeçalhos abaixo:
- Identificador de sessão de histórico
- Nome de host de servidor que aloja a aplicação
- Nome de inicio de sessão de usuário: inicia sessão no sistema operativo de usuário que executou a aplicação 4D no servidor.
Conteúdo
Para cada petição, são registrados os campos abaixo:
Nome de campo | Descrição |
sequence_number | Número de operação único e sequêncial na sessão de registro |
time | Data e hora usando o formato 'MM/DD/AA, HH:MM:SS' |
task_id | ID de tarefa interno |
component | Assinatura de componente (por exemplo, '4SQLS' ou 'dbmg') |
process_info_index | Corresponde ao campo "índice" de histórico 4DRequestsLog_ProcessInfo.txt log, e permite vincular uma solicitação a um processo. |
request | Solicita ID em C/S ou string de mensagens para petições SQL ou mensagens LOG EVENT |
bytes_in | Número de bytes recebidos |
bytes_out | Número de bytes enviados |
duration | Tempo tomado em milissegundos para realizar a ação |
task_kind | Preemptivo ou cooperativo (respectivamente 'p' ou 'c') |
connection_uuid | Identificador UUID de 4D Client, SQL ou Conexão HTTP (em relação com o mesmo número em 4DRequestsLog_ProcessInfo.txt) |
Este arquivo de log grava informações em cada processo criado numa ´máquina 4D Server ou máquina 4D Remote que execute o comando (excluindo Web requests).
Como iniciar este log:
Nota: esta declaração também inicia o arquivo de log 4DRequestsLog.txt (ver acima).
Cabeçalho
Este arquivo inicia com os cabeçalhos abaixo:
- Identificador de sessão Log
- Nome do host do servidor que é o host da aplicação
- Nome de login do usuário: login no OS do usuário que roda a aplicação 4D no servidor.
Conteúdos
Para cada processo, os campos abaixos são logados:
Nome do campo | Descrição |
sequence_number | Número único e sequencial de operação na sessão de login |
time | Data e hora usando formato "MM/DD/YY, HH:MM:SS" |
index | Número único e sequencial de processo |
CDB4DBaseContext | DB4D componente contexto de banco de dados UUID |
VTaskID | ID de tarefa interna |
server_process_id | Processo ID em Server |
remote_process_id | Processo ID em Cliente |
process_name | nome Processo |
cID | Identificador de 4D Conexão |
uID | Identificador de 4D Cliente |
IP | Endereço Cliente IPv4 |
host_name | Client hostname |
user_name | Nome de usuário de login on client |
connection_uuid | UUID identificador de processo de conexão (em conexão com o mesmo número em 4DRequestsLog.txt) |
Este arquivo de histórico registra cada solicitude HTTP e cada resposta em modo raw. A totalidade das petições, incluidos os cabeçalhos são registrados; Opcionalmente, podem ser registrados também as partes de corpo.
Como iniciar este registro:
Os seguintes campos são registrados para as petições e as respostas:
Nome de campo | Descrição |
SocketID | ID del socket utilizado para a comunicação |
PeerIP | Direção IPv4 del host (cliente) |
PeerPort | Porto utilizado pelo host (cliente) |
TimeStamp | Timestamp em milissegundos (desde o início de sistema) |
ConnectionID | UUID da conexão (UUID de VTCPSocket utilizado para a comunicação) |
SequenceNumber | Número de operação sequêncial e único na sessão de históricol |
Este arquivo de histórico registra cada evento que ocorre a nivel da linguagem de 4D. O modo padrão oferece uma vista básica dos eventos.
Como iniciar este arquivo de histórico:
Os campos abaixos são registrados para cada evento:
Coluna # | Descrição |
1 | Número de operação sequêncial e único na sessão de histórico |
2 | Tempo transcorrido em milissegundos desde o inicio de arquivo de histórico |
3 | ID processo (p=xx) e ID único de processo (puid=xx) |
4 | Nivel de pilha |
5 | Pode ser Nome de comando/Nome de método/Mensagem/Info Task Start Stop /Nome de Plugin, evento ou retrochamada/UUID da conexão |
6 | Tempo necessário para a operação no histórico em milissegundos (diferente da segunda coluna) |
Este arquivo de histórico registra cada evento gerado a nível de linguagem de 4D em um formato tabulado e compacto que inclui informação adicional (em comparação com o formato padrão).
Como iniciar este arquivo de histórico:
Os campos abaixos são registrados para cada evento:
Coluna # | Descrição |
1 | Número de operação sequêncial e único na sessão de histórico |
2 | Tempo transcorrido desde o início de arquivo de histórico no formato "hh:mm:ss:ms" (pode ser precedido por um contador de dias, por exemplo, se o registro foi iniciado faz 3 dias "3+11:58:23:163") |
3 | ID de processo |
4 | ID único de processo |
5 | Nivel de pilha |
6 | Pode representar (dependendo de tipo de entrada registrada na oitava coluna): um ID de comando da linguagem (quando o tipo=1) | um nome de método (quando o tipo=2) | uma combinação de pluginIndex;pluginCommand (quando o tipo=4, 5, 6 ou 7). Pode conter algo como '3;2' | um UUID de processo de conexão (quando o tipo=8) | ou pode conter 'starting sequence number' ao fechar um nível de pilha (isto deveria corresponder ao número de sequência de início da ação atual) |
121 15:16:50:777 5 8 0 CallMethod 2 0 | 122 15:16:50:777 5 8 1 283 1 0 | 123 15:16:50:777 5 8 1 122 -1 0 3 | 124 15:16:50:777 5 8 0 121 -2 0 61 | Aqui na última linha (124), o valor da sexta coluna '121' corresponde ao número de sequência da primeira linha (nivel de pilha 0). Na linha superior (123), o valor da sexta coluna '122' corresponde ao número de sequência da línha superior (nivel de pilha 1), etc. |
7 | Parâmetros passados aos comandos, métodos ou plugins |
8 | Tipo de operação de histórico. Este valor pode ser um valor absoluto: 1: Comando | 2: Método | 3: Mensagem (enviado pelo comando LOG EVENT unicamente) | 4: PluginMessage | 5: PluginEvent | 6: PluginCommand | 7: PluginCallback | 8: Task | Quando um valor for negativo, só significa que é a contraparte de fechamento de nivel da pilha (ver a coluna 8 nas linhas 123 e 124 no registro acima). |
9 | Evento formulario se houver; Vazio em outros casos (suponha que a coluna seja utiliza quando o código for executado em um método formulário ou script) |
10 | Tempo transcorrido em micro segundos da ação registrada atual; Só para os niveis de fechamento de pilha (ver a coluna 10 nas linhas 123 e 124 no histórico acima) |