...
Implementado uma rotina de gravação configurável de log para proporcionar uma análise mais adequada e clara da execução, carregamento e exceções nas rotinas de processamento de mensagens.
Com o log, será possível análisar os cenários já descritos bem como novos problemas que possam surgir no processo assíncrono de processamento de mensagens do PDV Desktop e MobShop.
Para o TaskManager responsável por executar a fila de mensagens, foi desenvolvido um Plugin para persistir os logs de cada execução e de cada mensagem, ficando com a estrutura similar à:
Image Added
Para o Financeiro, também foi adicionado diversos logs por toda à extensão do processo específico de processamento de Pagamentos, ficando similar à:
Image Added
Totvs custom tabs box |
---|
tabs | Passo 01, Passo 02, Passo 03, Passo 04TaskManager Configuração, TaskManager Instalação, TaskManager Exemplo, Financeiro Configuração, Financeiro Exemplo |
---|
ids | passo1,passo2,passo3,passo4,passo5 |
---|
|
Detalhes Totvs custom tabs box items |
---|
default | yes |
---|
referencia | passo1 |
---|
| Para realizar a configuração para uso do log Plugin, é necessário acessar o site Monitoramento e efetuar o login: Image Added
Na tela inicial, selecionar e clicar no botão 5000, referente a interface de configuração do log do TaskManager, conforme: Image Added
Acessar também o menu de configuração e verificar o nível de log: Image Added
Image Added
O campo Ativo deve estar com o valor 1 (ligado) e campo LogLevel com valor diferente de 0: Image Added
|
Totvs custom tabs box items |
---|
default | no |
---|
referencia | passo2 |
---|
| Após rodar o instalador da Fila, deve-se conferir o arquivo spf.exe.config: Image Added
Verificar se existe a chave "Integracao.ConnectionString" e caso não existir, criar manualmente conforme o exemplo: Image Added
Verificar a existência do arquivo "Plugin.Spf.LogIntegracao.dll", que é o próprio Plugin: Image Added
Na ausência do Plugin no diretório de instalação, entrar em contato com time de produto. OBS: O diretório de instalação pode variar dependendo do ambiente e apenas a existência do Plugin no diretório Queue não significa que o log será gravado, sendo necessário configurar. |
Totvs custom tabs box items |
---|
default | no |
---|
referencia | passo3 |
---|
| Após ativar o log do TaskManager por um período de tempo, para consultar os logs recomenda-se utilizar o ObjectID da mensagem e data de processamento: Abaixo um exemplo de consulta, informando o ObjectID da mensagem e o período do intervalo, mostrando que a mesma foi processada com erro. Image Added
Bloco de código |
---|
language | sql |
---|
firstline | 1 |
---|
title | consulta.sql |
---|
linenumbers | true |
---|
| USE rentech
GO
SELECT
*
-- TipoModulo, [Local], Mensagem, Creation
FROM Rentech..LogIntegracao (nolock)
WHERE DataHora >= 'DATAINICIO' AND DataHora < 'DATAFIM' AND
TipoModulo = 5000 AND
Mensagem LIKE '%OBJECTID-MENSAGEM%' |
No exemplo acima o log retorna foi o seguinte: [MessageManager] MensagemID: b7cf87ff-dc49-4c1d-84f1-2aa8fdaed03e Falha na execução. Exception: Exception has been thrown by the target of an invocation. | Error ocurred. | Error ocurred. | The type initializer for Rentech.Framework.Base.Functions threw an exception. | The type initializer for Rentech.Framework.Base.Functions threw an exception. | System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]: The type initializer for Rentech.Framework.Base.Functions threw an exception. (Fault Detail is equal to An ExceptionDetail, likely created by IncludeExceptionDetailInFaults=true, whose value is: System.TypeInitializationException: The type initializer for Rentech.Framework.Base.Functions threw an exception. ----> System.UnauthorizedAccessException: Access to the path Global\Mutex is denied. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.Threading.Mutex.MutexTryCodeHelper.MutexTryCode(Object userData) at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at System.Threading.Mutex.CreateMutexWithGuaranteedCleanup(Boolean initiallyOwned, String name, Boolean& createdNew, SECURITY_ATTRIBUTES secAttrs) at System.Threading.Mutex..ctor(Boolean initiallyOwned, String name, Boolean& createdNew, MutexSecurity mutexSecurity) at System.Threading.Mutex..ctor(Boolean initiallyOwned, String name) at Rentech.Framework.Base.Functions..cctor() --- End of inner ExceptionDetail...). | System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]: The type initializer for Rentech.Framework.Base.Functions threw an exception. (Fault Detail is equal to An ExceptionDetail, likely created by IncludeExceptionDetailInFaults=true, whose value is: System.TypeInitializationException: The type initializer for Rentech.Framework.Base.Functions threw an exception. ----> System.UnauthorizedAccessException: Access to the path. Demonstrando uma possível falha de permissão. |
Totvs custom tabs box items |
---|
default | no |
---|
referencia | passo4 |
---|
| Para realizar a configuração para uso do log no processamento dos pagamentos do Financeiro, é necessário acessar o site Monitoramento e efetuar o login: Image Added
Na tela inicial, selecionar e clicar no botão 2000, referente a interface de configuração do log do Financeiro, conforme: Image Added
Acessar também o menu de configuração e verificar o nível de log: Image Added
Image Added
O campo Ativo deve estar com o valor 1 (ligado) e campo LogLevel com valor diferente de 0: Image Added
|
Totvs custom tabs box items |
---|
default | no |
---|
referencia | passo5 |
---|
| Após ativar o log do Financeiro por um período de tempo, para consultar os logs recomenda-se utilizar o ObjectID da operação financeiro, gerado nos clientes PDV Desktop e Mobshop: Abaixo um exemplo de consulta, informando o ObjectID da operação financeira. Image Added
Bloco de código |
---|
language | sql |
---|
firstline | 1 |
---|
title | consulta.sql |
---|
linenumbers | true |
---|
| USE rentech
GO
SELECT
*
-- OwnerId, IdOperacao, DataOperacao, Creation, Observacao
FROM [ModuloFinanceiro]..[Financeiro_LogOperacao] (nolock)
WHERE IdOperacao = 'ID-OPERACAO-FINANCEIRA'
ORDER BY Creation |
OBS: Vale lembrar que, caso ocorra alguma exceção no processamento da mensagem do financeiro, o rollback realizado nos dados também afetará a gravação dos logs, pois ambos estarão na mesma transação! |
|
04. DEMAIS INFORMAÇÕES
O modelo de Plugin implementado no TaskManager utiliza o MEF, muito interessante para baixo acoplamento e controle de dependências.
Card documentos |
---|
Informacao | Use esse box para destacar informações relevantes e/ou de destaqueOs logs quando ativados, irão gravar toda execução. Dessa forma não mantenha ligado direto, pois a quantidade de informações é enorme e desnecessária. Habilite o log por um período, deixe coletar, desligue a integração e análise os dados. |
---|
Titulo | IMPORTANTE! |
---|
|
...
HTML |
---|
<style>
div.theme-default .ia-splitter #main {
margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
display: none;
}
#main {
padding-left: 10px;
padding-right: 10px;
overflow-x: hidden;
}
.aui-header-primary .aui-nav, .aui-page-panel {
margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
margin-left: 0px !important;
}
.aui-tabs.horizontal-tabs>.tabs-menu>.menu-item.active-tab a::after {
background: #FF9900; !important
}
.menu-item.active-tab {
border-bottom: none !important;
}
</style>
|