Componente de trilha de auditoria, .NET Standard 2.1 + código -fonte completo

LIVE PREVIEWBUY FOR $10

Componente de trilha de auditoria + código -fonte completo

Versão v1.0

Introdução

Auditoria de componentes de trilha de trilhas Ações do banco de dados (Adicionar, atualizar, excluir), ações comerciais (você pode especificá -las), envia notificações e registra seus próprios erros, também é dinâmico, pois dá ao usuário a capacidade de especificar [Business actions]Assim, [Emails that notifications will be sent to]Assim, [Notification’s subject] e [Notification’s Message]você também pode pesquisar todos os dados foi armazenado pelo componente por métodos predefinidos.

Estrutura: .NET Padrão 2.1

Pacotes:

  • Microsoft.EntityFrameworkCore.SQLServer 3.1.3
  • Newtonsoft.json 12.0.3

Pacotes Hangfire:

  • Hangfire.aspnetcore
  • Hangfire.sqlserver

Características :

  • Armazenar ações de banco de dados e ações comerciais.
  • Enviar notificações.
  • LOG PROCESSO DE NOTIFICAÇÃO DE ENVIAR E REPAREIRO SE FALAR.
  • Erros de log.
  • Dinâmica: o usuário pode especificar ações e emails e especificar se o componente deve enviar notificação quando uma ação específica aconteceu.

Recomendação:

Use o trabalho de fundo para executar métodos de componentes, para garantir que o tempo de solicitação original não seja aumentado.

Tabelas de banco de dados

Audit.action

Para armazenar dados de pesquisa de ações

Audit.actionUserGroup

para fazer relação entre [action]e e -mails; portanto, se essa ação ocorreu, o componente enviará uma notificação para os e -mails relacionados com a mensagem especificada.

Audit.audittrail

Para armazenar os dados de auditoria

Audit.errorlog

Para registrar os erros do componente

Audit.Notification

Para armazenar as notificações que o componente enviará para e -mails

Audit.NotificationLog

Para registrar o processo de notificação de envio, o componente armazenará todos

Como se registrar

  • No seu projeto, você precisa instalar o Hangfire Nugetpackages [Hangfire.AspNetCore, Hangfire.SqlServer] ou qualquer pacote para executar o processamento em segundo plano.
  • Também você precisa implementar[ IEmailService ] Interface para enviar e -mails de notificação.

Aula de inicialização

  • No método [ConfigureServices]

#region hangfire

// Adicione serviços de Hangfire.

Services.addhangfire (Configuration => Configuração

.SETDATACOMPATIBILIDADELEL (compatibilidadeLevel.version_170)

.UsimpleamsmblyMetyPeynamentype ()

.UseReComlendedSerializerSettings ()

.USESQLSERVERSTORAGE (Configuration.getConnectionString (“DefaultConnection”), New SQLServerStorageOptions

{

CommandBatchMaxTimeout = timepan.fromminutes (5),

SlidingInvisibilityTimeout = timepan.fr Memominutes (5),

QueuepollInterval = timespan.Zero,

UserComMedisolationLEvel = true,

Usepagelocksondequeue = true,

Desabillegloballocks = true

}));

// Adicione o servidor de processamento como IHOSTEDSERVICE

Services.addhangfireServer ();

#endregion

#Region Audit

Services.Addscoped ();

// AdauditTrail Classes

Services.addaudittrail (Configuration.getConnectionstring (“DefaultConnection”),

nova lista {

new AuditActionDto () {ActionCode = “CreateOrder”, SendNotification = true, notificationFromEmail = “admin@gmail.com““

NotificationEmails = “ahmed@yahoo.com,ali@hotmail.com”, Notificationsubject =” sujeito “

NotificationMessage = ”Mensagem de amostra”},

novo AuditActionDto () {ActionCode = “DeleteOrder”, SendNotification = true, notificaçãoFromEmail = “admin@gmail.com”,

NotificationEmails = “ahmed2@yahoo.com,ali2@hotmail.com”, Notificationsubject =” sujeito “,

NotificationMessage = ”Sample Message2”},

novo AuditActionDto () {ActionCode = “UpdateOrder”, sendNotification = true},

novo AuditActionDto () {ActionCode = “NewUpdateOrder”, sendNotification = false}});

// Registre o trabalho de fundo para verificar as notificações para enviar e -mails

var sp = Services.BuildServiceProvider (). CreateScope (). ServiceProvider;

var notificationservice = sp.getService ();

JobStorage.Current = new SQLServerStorage (Configuration.getConnectionstring (“DefaultConnection”),

Novas SQLServerStorageOptions

{

CommandBatchMaxTimeout = timepan.fromminutes (5),

SlidingInvisibilityTimeout = timepan.fr Memominutes (5),

QueuepollInterval = timespan.Zero,

UserComMedisolationLEvel = true,

Usepagelocksondequeue = true,

Desabillegloballocks = true

});

Recurringjob.addorupdate (() => notificationservice.checkNotificationsandSend (), Cron.Daily);

#endregion

Como criar mesas

  • Abrir [Package manager console] e no [Default project] lista .. selecione [AuditTrailComponent] projeto
  • Escreva os comandos abaixo
    • IniciAudit de migração add -Context AuditDBContext
    • Update -Database -Context AuditDBContext

Como usar

  • Injete esta interface na sua classe [IAuditTrailService]
  • Para armazenar ação comercial

Antecedentesjob.enqueue (() => AuditTrailService.SaveCustomactorauditTrailasync (“DeleteOrder”, “Dados de amostra por Hangfire”, “UserName1”));

  • Para armazenar a ação do banco de dados, use o código abaixo antes da Entidade Salvar Método de Alterações

BackgroundJob.enqueue (() => AuditTrailService.SavedBactáriaAuditTrailasync (ApplicationDbContext.ChangeTracker.Entries ()

.Select (a =>

NOVO DATABASECHANGESDDO

{

Entidade = a.entidade,

OriginalValues ​​= a.originalValues.toObject (),

CurrentValues ​​= a.currentValues.toObject ()

})). Tolist ());

  • Para procurar dados de auditoria

// injete esta interface [IAuditTrailService]

AuditTrailFilterDto Model = new AuditTrailFilterdto {Audit_ActionCode = “DeleteOrder”};

var resultado = aguarda audittrailservice.search (modelo);

  • Para procurar notificações

// injete esta interface [INotificationPublicService]

NotificationFilterDto Model = new NotificationFilterdto {Audit_ActionCode = “DeleteOrder”};

var resultado = aguarda notificationpublicservice.searchNotifications (Model);

  • Para procurar o registro de notificação

// injete esta interface [IErrorLogPublicService]

NotificationLogFilterDto Model = new NotificationLogFilterdto {};

var resultado = aguardar notificações.

  • Para procurar logs de erros

// injete esta interface [IErrorLogPublicService]

ErrorLogFilterDTO Model4 = new ErrorLogFilterdto ();

var resultado = aguarda errorLogPublicService.search (Model4);


Source


Posted

in

by