AuditKit 8.6.0
See the version list below for details.
dotnet add package AuditKit --version 8.6.0
NuGet\Install-Package AuditKit -Version 8.6.0
<PackageReference Include="AuditKit" Version="8.6.0" />
<PackageVersion Include="AuditKit" Version="8.6.0" />
<PackageReference Include="AuditKit" />
paket add AuditKit --version 8.6.0
#r "nuget: AuditKit, 8.6.0"
#:package AuditKit@8.6.0
#addin nuget:?package=AuditKit&version=8.6.0
#tool nuget:?package=AuditKit&version=8.6.0
AuditKit
Библиотека для ведения журнала аудита действий пользователей через Entity Framework Core. Поддерживает запись, фильтрацию по действию, сущности, пользователю, дате и диапазону дат, пагинацию и экспорт в DataTable.
Установка
dotnet add package AuditKit
Или через NuGet Package Manager:
Install-Package AuditKit
Пространство имён
using AuditKit;
Настройка
Добавьте DbSet<AuditLog> в ваш DbContext:
using AuditKit;
public class MyDbContext : DbContext
{
public DbSet<AuditLog> AuditLogs { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlServer("...");
}
После добавления выполните миграцию:
dotnet ef migrations add AddAuditLog
dotnet ef database update
Модель данных
AuditLog
Модель записи аудита.
public class AuditLog
{
[Key]
public int Id { get; set; }
public DateTime Timestamp { get; set; }
public string UserName { get; set; }
public string Action { get; set; }
public string EntityName { get; set; }
public string Details { get; set; }
public string IpAddress { get; set; }
}
| Свойство | Тип | Описание |
|---|---|---|
Id |
int |
Идентификатор записи (первичный ключ) |
Timestamp |
DateTime |
Дата и время действия |
UserName |
string |
Имя пользователя |
Action |
string |
Тип действия (Создание, Изменение, Удаление, Просмотр, Экспорт, Вход, Другое) |
EntityName |
string |
Имя сущности |
Details |
string |
Подробности действия |
IpAddress |
string |
IP-адрес пользователя |
Полный справочник API
Все методы находятся в статическом классе Audit.
Audit.Log
Записывает произвольное действие в журнал аудита.
void Log(DbContext db, string details, string userName, string action = "Другое", string entityName = "", string ipAddress = "")
| Параметр | Тип | Описание |
|---|---|---|
db |
DbContext |
Контекст базы данных |
details |
string |
Описание действия |
userName |
string |
Имя пользователя |
action |
string |
Тип действия (по умолчанию "Другое") |
entityName |
string |
Имя сущности (по умолчанию пустая строка) |
ipAddress |
string |
IP-адрес (по умолчанию пустая строка) |
Audit.LogCreate
Записывает создание сущности (action = "Создание").
void LogCreate(DbContext db, string entityName, string details, string userName, string ipAddress = "")
| Параметр | Тип | Описание |
|---|---|---|
db |
DbContext |
Контекст базы данных |
entityName |
string |
Имя сущности |
details |
string |
Подробности |
userName |
string |
Имя пользователя |
ipAddress |
string |
IP-адрес (необязательный) |
Audit.LogEdit
Записывает изменение сущности (action = "Изменение").
void LogEdit(DbContext db, string entityName, string details, string userName, string ipAddress = "")
| Параметр | Тип | Описание |
|---|---|---|
db |
DbContext |
Контекст базы данных |
entityName |
string |
Имя сущности |
details |
string |
Подробности |
userName |
string |
Имя пользователя |
ipAddress |
string |
IP-адрес (необязательный) |
Audit.LogDelete
Записывает удаление сущности (action = "Удаление").
void LogDelete(DbContext db, string entityName, string details, string userName, string ipAddress = "")
| Параметр | Тип | Описание |
|---|---|---|
db |
DbContext |
Контекст базы данных |
entityName |
string |
Имя сущности |
details |
string |
Подробности |
userName |
string |
Имя пользователя |
ipAddress |
string |
IP-адрес (необязательный) |
Audit.GetAll
Возвращает все записи аудита, отсортированные по дате (от новых к старым).
List<AuditLog> GetAll(DbContext db)
| Параметр | Тип | Описание |
|---|---|---|
db |
DbContext |
Контекст базы данных |
Возвращает: List<AuditLog> — все записи аудита.
Audit.GetByDate
Возвращает записи аудита за указанную дату.
List<AuditLog> GetByDate(DbContext db, DateTime date)
| Параметр | Тип | Описание |
|---|---|---|
db |
DbContext |
Контекст базы данных |
date |
DateTime |
Дата для фильтрации |
Возвращает: List<AuditLog> — записи за указанную дату.
Audit.GetByUser
Возвращает записи аудита для указанного пользователя.
List<AuditLog> GetByUser(DbContext db, string userName)
| Параметр | Тип | Описание |
|---|---|---|
db |
DbContext |
Контекст базы данных |
userName |
string |
Имя пользователя |
Возвращает: List<AuditLog> — записи указанного пользователя.
Audit.GetByAction
Возвращает записи аудита для указанного типа действия.
List<AuditLog> GetByAction(DbContext db, string action)
| Параметр | Тип | Описание |
|---|---|---|
db |
DbContext |
Контекст базы данных |
action |
string |
Тип действия (например, "Создание", "Удаление", "Изменение", "Экспорт") |
Возвращает: List<AuditLog> — записи с указанным типом действия.
Audit.GetByEntity
Возвращает записи аудита для указанной сущности.
List<AuditLog> GetByEntity(DbContext db, string entityName)
| Параметр | Тип | Описание |
|---|---|---|
db |
DbContext |
Контекст базы данных |
entityName |
string |
Имя сущности |
Возвращает: List<AuditLog> — записи для указанной сущности.
Audit.GetPaged
Возвращает записи аудита с пагинацией.
(List<AuditLog> Items, int Total, int Pages) GetPaged(DbContext db, int page = 1, int pageSize = 50)
| Параметр | Тип | Описание |
|---|---|---|
db |
DbContext |
Контекст базы данных |
page |
int |
Номер страницы (по умолчанию 1) |
pageSize |
int |
Размер страницы (по умолчанию 50) |
Возвращает: кортеж из:
Items(List<AuditLog>) — записи на текущей страницеTotal(int) — общее количество записейPages(int) — общее количество страниц
Audit.GetByDateRange
Возвращает записи аудита за диапазон дат (включительно по обеим границам).
List<AuditLog> GetByDateRange(DbContext db, DateTime from, DateTime to)
| Параметр | Тип | Описание |
|---|---|---|
db |
DbContext |
Контекст базы данных |
from |
DateTime |
Начальная дата |
to |
DateTime |
Конечная дата |
Возвращает: List<AuditLog> — записи за указанный период.
Audit.ToDataTable
Преобразует все записи аудита в DataTable для экспорта. Столбцы: Id, Дата, Пользователь, Действие, Сущность, Подробности, IP.
DataTable ToDataTable(DbContext db)
| Параметр | Тип | Описание |
|---|---|---|
db |
DbContext |
Контекст базы данных |
Возвращает: DataTable — таблица с записями аудита.
Примеры использования
Пример 1. Логирование CRUD-операций
using AuditKit;
// При добавлении записи
var product = new Product { Name = "Ноутбук Lenovo", Price = 50000 };
db.Products.Add(product);
db.SaveChanges();
Audit.LogCreate(db, "Товар", $"Создан: {product.Name}, цена {product.Price} руб.", "admin");
// При изменении
var oldPrice = product.Price;
product.Price = 45000;
db.SaveChanges();
Audit.LogEdit(db, "Товар", $"Цена изменена: {oldPrice} -> {product.Price}", "admin");
// При удалении
Audit.LogDelete(db, "Товар", $"Удалён ID={product.Id}, {product.Name}", "admin", "192.168.1.100");
// Произвольное действие
Audit.Log(db, "Пользователь вошёл в систему", "admin", "Вход");
Пример 2. Фильтрация, диапазон дат и пагинация
using AuditKit;
// Записи за сегодня
var today = Audit.GetByDate(db, DateTime.Today);
// Записи за последнюю неделю
var weekly = Audit.GetByDateRange(db, DateTime.Today.AddDays(-7), DateTime.Today);
// Только удаления
var deletions = Audit.GetByAction(db, "Удаление");
// Записи для конкретной сущности
var productLogs = Audit.GetByEntity(db, "Товар");
// Записи конкретного пользователя
var adminLogs = Audit.GetByUser(db, "admin");
// Пагинация: вторая страница по 20 записей
var (items, total, pages) = Audit.GetPaged(db, page: 2, pageSize: 20);
Console.WriteLine($"Страница 2 из {pages}, всего записей: {total}");
Пример 3. Экспорт аудита в DataTable и отображение
using AuditKit;
// Экспорт всех записей в DataTable
var dt = Audit.ToDataTable(db);
dataGridView.DataSource = dt;
// Можно передать в ExportKit для экспорта в Excel/PDF
Console.WriteLine($"Экспортировано {dt.Rows.Count} записей аудита");
Лицензия
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- Microsoft.EntityFrameworkCore (>= 8.0.25)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on AuditKit:
| Package | Downloads |
|---|---|
|
ISBuilder
Information System Builder — full toolkit for building .NET 8 WinForms applications with EF Core, SQL Server. Export, CRUD, forms, charts, auth, reports, validation, themes. |
GitHub repositories
This package is not used by any popular GitHub repositories.