CRM 2015/2016 – Plugin Trace Logs

Pessoal,

Desde o Update 1 do CRM 2015, podemos observar de forma centralizada (em um único local) os logs dos plugins ou custom workflows que temos registrados no Dynamics CRM. Isso nos auxiliará bastante em relação a visualização de erros e execuções.

O log apresenta um conteúdo detalhado do plugin/custom workflow, com informações do Nome do Plugin, Mensagem, Entidade Primária, Valores de Configuração (seguros ou não), Hora da Execução, Tempo de Execução, Detalhamento do Erro, entre outros!

plugintracelog_1

plugintracelog_2

 

O recurso não vem ativado por padrão, assim devemos, primeiramente ativá-lo, navegue em Configurações > Administração > Configurações do Sistema > Aba Customizações > Opção Plugin e Workflow Customizado Trace de Atividade (Plug-in and Custom Workflow Activity Trace), selecione as opções “Todos” ou “Exceções“:

plugintracelog_3

 

Caso tenha selecionado a opção Exceções, todas as exceções de plugins/custom worflows serão logadas automaticamente! Para acessá-las navegue em Configurações > Log de Execução de Plugins (Plug-in Trace Logs)

Caso tenha selecionado Todos, todas as execuções de plugins/custom workflows serão logados! Vale lembrar que para que todos os plugins e custom workflows executados sejam apresentados na listagem, teremos que incluir informações de Trace na codificação, como no exemplo abaixo:

public void Execute(IServiceProvider serviceProvider)
{
    ITracingService tracer = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
    IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
    IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
    IOrganizationService service = factory.CreateOrganizationService(context.UserId);

    try
    {
        Entity entity = (Entity)context.InputParameters["Target"];

        if (tracer == null)
            throw new InvalidPluginExecutionException("Failed to retrieve the tracing service.");


        // The InputParameters collection contains all the data passed in the message request.
        if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
        {
            // Verify that the target entity represents an account.
            // If not, this plug-in was not registered correctly.
            if (entity.LogicalName != "account")
                return;

            tracer.Trace("Tracing started...");

            //Query Project Link Settings
            QueryExpression query = new QueryExpression("account");
            ColumnSet cols = new ColumnSet();
            cols.AllColumns = true;
            query.ColumnSet = cols;

            EntityCollection settings = service.RetrieveMultiple(query);
            foreach (Entity ent in settings.Entities)
            {
                tracer.Trace("account name " + ent.Attributes["name"]);
            }

            tracer.Trace("The Plugin tracing has finished...");
        }
    }
    catch (Exception e)
    {
        throw new InvalidPluginExecutionException(e.Message);
    }
}

Vejam que no código acima, eu faço uso do objeto ITracingService, que de acordo com as funções do código podemos inserir pontos de trace “tracer.Trace(‘MENSAGEM’)”. Podemos utilizar como boa prática a implementação do trace para facilitar a resolução de bugs nos plugins/custom workflows!

Para maiores informações consulte:

Debug a plug-In

CRM2011: Useful ITracingService addiion when creating plugin assemblies

[]’s,

Tiago Cardoso

Anúncios

Sobre Tiago Michelini Cardoso

I have been working with IT since 2006, almost of this time using Microsoft Dynamics CRM/365 as a source of solutions. I graduated in Bachelor of Information Systems at FIAP (Brazil) in 2012. I really love what I do! Technology has been my interest since always. Even in a tool different world of the current. When we didn't have internet, tablets, smartphones e social networks! Although I have worked in some roles, I can't give up "the developer life". Even so far of the greatest developers. Development in general is the thing that I love to work! I started my contributions about Dynamics in 2010. At the beginning, I used to help at MSDN and TechNet forums. But now, I'm dedicating all my time in my personal blog! Currently, I have the enormous honour of being the only Brazilian who got the award for Microsoft MVP (Most Valuable Professional) for Microsoft Dynamics CRM/365 product. I have been receiving the award since 2012.
Esse post foi publicado em Dynamics CRM e marcado , . Guardar link permanente.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s