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);