HDI: Monitorize a sua actividade de aplicação 4D
Pode especificar o tipo de actividade que deseja monitorizar:
- Actividade de dados 4D: operações que envolvem os próprios dados 4D,
- Actividade de rede: obterá a mesma informação que no ficheiro 4DRequestsLog (*),
- Execução linguística: obterá a mesma informação que no ficheiro 4DDebugLog (*).
(*) Não há necessidade de activar os ficheiros de registo correspondentes, pelo que não é utilizado espaço no disco.
comando START MONITORING ACTIVITY (Iniciar actividade de monitorização)
O START MONITORING ACTIVITY toma como parâmetros o limiar de duração e o tipo de operações a monitorizar . Para isso, as seguintes novas constantes podem ser usadas para monitorizar:
- Activity operations: operações nos dados 4D
- Activity network: operações da actividade da rede
- Activity language: operações da execução linguística
Obter o comando Monitored Activity
Quando quiser obter toda a actividade registada, basta chamar o novo comando Get Monitored Activity() comando!
Retorna uma colecção de objectos com a informação relevante que pode utilizar como desejar (gerar um ficheiro, exibir uma interface para o administrador, etc.).
Comando STOP MONITORING ACTIVITY (PARAR A CONTROLO DA ACTIVIDADE)
Quando quiser parar de gravar a sua actividade de aplicação 4D ou para esvaziar a memória, basta chamar o comando STOP MONITORING ACTIVITY comando.
EXEMPLO DE CONSTRUÇÃO
Na maioria dos casos, a sua necessidade será:
A cada 10 minutos, quero verificar se algumas operações duraram mais de 10 segundos no meu Servidor 4D. Se sim, quero enviar um e-mail ao administrador (ou tomar outra acção).
O seguinte é um código para fazer exactamente isso.
ON método de arranque do servidor
C_LONGINT($monitorProcessId)
STOP MONITORING ACTIVITY
// Detect 4D data operations which lasted more than 10s
START MONITORING ACTIVITY (10;Activity operations)
//Run a monitoring process
$monitorProcessId :=New process("monitorOperations";0; "Monitor Operations")
processo de monitorização (para ser executado no servidor)
C_COLLECTION
($activities)
While (Not(Process aborted))
// Inspect 4D data activity every 10 minutes
DELAY PROCESS (Current process;36000)
// Get the long operations and exclude backup operations
$activities :=Get Monitored Activity().query("Not(activityData.message IN :1)";New collection("@backup@"))
If ($activities.length#0)
// Send an email to the administrator with $activities details
// Empty the memory and restart the monitoring STOP MONITORING ACTIVITY
START MONITORING ACTIVITY (10;Activity operations)
End if
End while
no método de encerramento do servidor
C_COLLECTION($activities)
$activities :=Get Monitored Activity().query("Not(activityData.message IN :1)";New collection("@backup@"))
If ($activities.length#0)
// Send an email to the administrator with $activities details
End if