All notable changes to Audit.NET and its extensions will be documented in this file.
The format is based on Keep a Changelog.
- Audit.EntityFramework.Core: Changing version for Microsoft.EntityFrameworkCore reference when targeting .NET Standard 2.0 or 2.1 (now referencing Microsoft.EntityFrameworkCore 3.1.0) (#310)
- Audit.NET.AmazonQLDB: Adding new data provider for Amazon QLDB.
- Audit.Mvc and Audit.WebApi: Remove obsolete package references for netcoreapp >= 3.0 (Microsofot.AspNetCore.*) (#297)
- Audit.Mvc and Audit.WebApi: MissingMethodException Method not found: 'AuditScope.DisposeAsync()' when referencing Audit.Mvc from an ASP.NET core 3.1 application. (#296)
- Audit.NET: Modified
ISystemClock
interface to return a DataTime instead of DateTimeOffset so the DateKind is preserved (#287)
- Audit.EntityFramework: Fix Stack Overflow problem when entity has validation errors. Only for the .NET framework EF. (#294)
- Audit.WebApi: Use GetCurrentAuditScope when an HttpContext is missing (#285)
- Audit.WebApi: Package reference
Microsoft.AspNetCore.Mvc
downgrade for to version 2.1.0 for compatibility with older net core 2.1 framework (#284)
- Audit.EntityFramework: Fix EF events not being audited when calling EF Core's
SaveChangesAsync(bool acceptAllChangesOnSuccess,CancellationToken cancellationToken = default)
overload on the AuditDbContext. (#277)
- Audit.EntityFramework: Fix audit error when auditing multiple types inheriting from the same entity/table (#273)
- Audit.Mvc: Fix audit event saving when an exception occurs on the action method being audited (ASP.NET) (#274)
- Audit.EntityFramework: EntityFrameworkProvider add the possibility to configure the property matching by type, object-wide. (#269)
- Audit.NET.AzureStorage: Change table mapping cache dictionary to be a ConcurrentDictionary (#268)
- Audit.NET: Renaming properties
SerializedOld
andSerializedNew
to beOld
andNew
respectively onAuditTarget
class. (#261) - Audit.EntityFramework / Audit.EntityFramework.Core: Adding net472 as target to allow targeting EF CORE 3 from the full .NET Framework. (#263)
- Audit.WebApi / Audit.WebApi.Core: Changing body request/response read to be asynchronous. Avoiding exception when used on asp.net core 3 (System.InvalidOperationException: Synchronous operations are disallowed. Call ReadAsync or set AllowSynchronousIO to true instead) (#259)
- Audit.WebApi / Audit.WebApi.Core: Removing unneeded references (Microsoft.AspNetCore.Identity and Microsoft.Extensions.PlatformAbstractions) (#258)
- Audit.WebApi / Audit.WebApi.Core: Adding execution context getter to AuditApiAction (#257)
- Audit.EntityFramework: Fix 'Property set method not found.' for get-only properties on audit entities (#256)
- Audit.NET.AzureStorage: Fixed issue with non-concurrent collections (#223, #255)
- Audit.EntityFramework: Adding support for Net Standard >= 2.1 to point to the EntityFramework 6.3.0 library. (#249)
- Audit.NET.Elasticsearch: Updating for Elasticsearch 7 support. NEST library updated to latest release 7.3.1. (#248).
- Audit.NET.EntityFrameworkCore: Updating Microsoft.EntityFramework.Core library to 3.0.0.
- Audit.NET.MongoDB: Updating MongoDB.Driver library to latest release (2.9.1). This fixes problem when using mongo DB data provider in Net Core 3.0 (#246).
- Audit.EntityFramework: Adding ExcludeValidationResults setting to allow excluding entity validations on the audit output.
- Audit.SqlServer: Adding boolean configuration value (SetDatabaseInitializerNull) to specify if the initializer should be set to NULL on the constructor of the internal DbContext. Only for .NET Framework (#237)
- Audit.EntityFramework: EntityFramework Data Provider support to map a single entity to multiple audit entities.
- Audit.SqlServer: Adding NET Core 3 preview support (#234)
- Audit.EntityFramework.Core: Adding EF Core 3 support (#231)
- Audit.WebApi and Audit.WebApi.Core: Changed the default order on
AuditApiAttribute
andAuditApiGlobalFilter
to beint.MinValue
instead of0
. This allows usingthis.GetCurrentAuditScope()
on Controller overridesOnActionExecutionAsync
andOnActionExecuting
(#230)
- All: Changed nuget package to point to the base Audit.NET repository, so it can be uploaded to GitHub packages
- Audit.WebApi: Fix null reference exception when response is null and response headers are included (#229)
- Audit.NET: Added
ISystemClock
interface to allow testing code that depends onDateTime.UtcNow
, such as event start-date, end-date and duration. AddedAudit.Core.Configuration.SystemClock
static configuration property.
- Audit.NET.PostgreSql: Fix IdColumnName missing quotes (#226)
- Audit.NET.SqlServer: Update Microsoft.EntityFrameworkCore reference and remove SqlServer.Design reference for netstandard2.0. (#225)
- Audit.NET.NLog: New extension library to store the audit events using NLog™.
- Audit.EntityFramework: Update Microsoft.EntityFrameworkCore to 2.2.4. Fixed issue with non-concurrent collections in concurrent integration
- Audit.WebApi / Audit.WebApi.Core: Allowing the use of
[AuditIgnoreAttribute]
on controllers/action methods when using the Middleware or a mixed approach (Middleware+ActionFilter). (#218)
- Audit.HttpClient: New extension library to audit client calls to REST services when using
HttpClient
.
- Audit.Mvc and Audit.Mvc.Core: Added
AuditIngoreAttribute
to allow ignoring controllers, actions and/or parameters on the MVC audit output.
- Upgrade newtonsoft.json references to latest version (12.0.2)
- Audit.EntityFramework and Audit.EntityFramework.Core: Adding constructor to the EF Data Provider that allows fluent API configuration.
- Audit.EntityFramework and Audit.EntityFramework.Core: Adding
ExcludeTransactionId
setting to allow avoiding the retrieval of the contextual transaction id for the audit events.
- Audit.EntityFramework and Audit.EntityFramework.Core: Fix compatibility issue with EF Core's Proxied Lazy Loading (Microsoft.EntityFrameworkCore.Proxies) (#214).
- Audit.WebApi and Audit.WebApi.Core: Ignoring action parameters marked with
[FromServicesAttribute]
(#213).
- Audit.NET.PostgreSql: Adding ability to configure extra columns on the audit SQL table with
CustomColumn
fluent API.
- Audit.NET: Adding ability to re-assign the AuditEvent's Target object after the scope is created.
- Audit.NET.SqlServer: Adding ability to configure extra columns on the audit SQL table with
CustomColumn
fluent API, and making JsonColumn optional.
- Audit.EntityFramework: Fix race condition on EntityKeyHelper when obtaining the column names (#208)
- Audit.NET.AzureStorage: Added Azure Active Directory Authentication support via Access Token for the BLOB storage Data Provider.
- Audit.EntityFramework: Fixed #198, adding validation to avoid exception when multiple mapping fragments are found.
- Audit.AzureStorage: Added constructor overloads to
AzureTableDataProvider
andAzureBlobDataProvider
that accepts a fluent configuration. Useful for custom providers inheriting from those classes.
- Audit.WebApi and Audit.WebApi.Core: Added Response Headers to the event output (optional by
IncludeResponseHeaders
configuration, default is false). - Audit.Core: Added optional Custom Fields to
AuditEvent.Environment
.
- Audit.EntityFramework and Audit.EntityFramework.Core: Added Schema property on entries to complement table name (#182). Added optional Custom Fields to Entity Framework Event and Event.Entries.
- Audit.NET.MySql: Changed target frameworks to match those on MySqlConnector nuget version 0.47.1.
- Audit.Core: UTC standarization for dates: changing missing dates to be UTC (Event.StartDate, Event.EndDate).
- Audit.Core: Added
Configuration.Setup().Use()
shortcut method forUseCustomProvider()
andUseDynamicProvider()
.
- Audit.Core: Adding support to Xamarin/Mono. Fix incompatible calls to
System.Runtime.InteropServices.Marshal
. (#180)
- Audit.EntityFramework.Core: Fix bug when auditing tables with composite multiple froeign keys related to the same column (#178).
- Audit.EntityFramework and Audit.EntityFramework.Core: Fix parameter default for
IgnoreMatchedProperties(bool)
on configuration API to be true.
- Audit.EntityFramework and Audit.EntityFramework.Core: Allow mapping multiple entity types to the same audit type with independent actions. (#175)
- Audit.PostgreSQL: Fix casing for schema name, allowing case-sensitive schemas. (#174)
- Audit.MongoDB: Fix bug when deserializing custom fields (#173)
- Audit.WebApi and Audit.Mvc: Upgrading AspNetCore libraries from GitHub suggestion because of security vulnerability.
- Audit.AzureDocumentDB: Adding netstandard2.0 as target
- Audit.WebApi.Core: (#158) Moving
GetAuditScope
extension method toControllerBase
instead ofController
. - Audit.Template.WebApi and Audit.Template Mvc: Using the built-in extension for registering a IHttpContextAccessor (#160)
- Audit.WebApi.Core: (Fix bug #161) Empty http response when using IncludeResponseBody on both the middleware and the audit filter.
- Audit.WebApi / Audit.WebApi.Core: Have request/response bodies retrieval mutually exclusive between ActionFilter and MiddleWare.
- Audit.WebApi.Template: Adding middleware to webapi default template.
- Audit.WebApi / Audit.WebApi.Core: Added new middleware to complement the action filter audits and be able to log any request regardless if an action is reached or not.
- Audit.EntityFramework and Audit.EntityFramework.Core: Created new nuget packages
Audit.EntityFramework.Identity
andAudit.EntityFramework.Identity.Core
to remove the AspNet.Identity dependency.
- Audit.NET.DynamoDB: Adding new extension Audit.NET.DynamoDB to save audit events into Amazon DynamoDB using the
AWSSDK.DynamoDBv2
document model.
- Audit.Core: Adding GetXxxxxEvent() extensions to AuditScope in addition to the AuditEvent.
- Audit.EntityFramework: Added validation on EF Data Provider to ignore non EF events.
- Audit.EntityFramework: Fix #150: Race condition on Audit.EF .NET Framework version, when multiple threads are calling EF SaveChanges.
- Audit.EntityFramework and Audit.EntityFramework.Core: Allow setting up a different DbContext for storing the audit events on the EF Data Provider. Related to #148.
- Audit.WebApi: Fix bug #147 for Microsoft.AspNet.WebApi.Versioning package compatibility.
- Audit.EntityFramework.Core: Replace Microsoft.EntityFrameworkCore.SqlServer dependency in Audit.EntityFramework.Core with Microsoft.EntityFrameworkCore.Relational. (thanks to https://github.com/Deilan).
- Audit.WebApi: Fix bug #146 on IsActionIgnored for .NET framework WebApi.
- Audit.Core: Changing the exception serialization to include the stacktrace and inner exceptions.
- Audit.WebApi, Audit.WebApi.Core: Adding AuditIgnoreAttribute for controller, actions and arguments.
- Audit.EntityFramework: Adding DefaultAuditContext and documentation on readme.md about using the library without inheritance.
- Audit.EntityFramework and Audit.EntityFramework.Core: Removing SqlServer.Design dependency
- Audit.NET: Added FileDataProvider constructor overload with fluent API.
- Audit.NET.SqlServer: Added SqlDataProvider constructor overload with fluent API.
- Audit.NET.PostgreSql: Added PostgreSqlDataProvider constructor overload with fluent API.
- Audit.NET.MySql: Added MySqlDataProvider constructor overload with fluent API.
- Audit.NET.MongoDB: Added MongoDataProvider constructor overload with fluent API.
- Audit.NET.log4net: Added Log4netDataProvider constructor overload with fluent API.
- Audit.NET.ElasticSearch: Added ElasticSearchDataProvider constructor overload with fluent API.
- Audit.WebApi, Audit.WebApi.Core and Audit.Mvc.Core: Added
TraceId
field on the output, with the internal ASP.NET correlation id per request. - Added Audit.WebApi.Template dotnet new template.
- Audit.EntityFramework and Audit.EntityFramework.Core: Adding support for ambient transactions (i.e. TransactionScope) on EF Core 2.1. Added AmbientTransactionId field to EF event output.
- Audit.NET.AzureStorage: Adding new data provider for storing events on Azure Tables
AzureTableDataProvider
.
- Audit.EntityFramework: Fix #127: (For EF 6) Foreign keys are set to NULL when deleting a relation entity (many-to-many), this was making NULL the column values holding the foreign key. Adding a workaround to avoid updating the foreign column values from the foreign key values that are set to NULL by EF.
- Audit.WebApi and Audit.WebApi.Core: Fix #131. Swallow
InvalidDataException
when accessing the Request.Form getter and return NULL is case of that type of exception. Only for the asp.net core version
- Audit.NET.Udp: Fix #129. Allow specifying host name on the Udp Configuration as an alternative to the IP address.
- Audit.NET.EventLog.Core: Created this new assembly/package to output events to the windows eventlog when targeting net core 2.0.
- Audit.EntityFramework and Audit.EntityFramework.Core: Fix #128 to be compatible with new EF Core 2.1 lazy loading feature.
- Audit.NET: Removing Microsoft.Windows.Compatibility dependency from Audit.NET package
- Audit.Mvc and Audit.Mvc.Core: Adding request and response bodies to the logs, optional via IncludeRequestBody and IncludeResponseBody properties on the action filter attribute.
- Audit.NET.AzureDocumentDB: Fix #126: AzureDocumentDb not respecting the global JsonSettings.
- Audit.Core: Fix bug #126: FileDataProvider not respecting JsonSettings. Exposed JsonSettings as a property of the FileDataProvider and fixed async methods.
- Audit.EntityFramework: Fix bug on SaveAsync for EntityFrameworkDataProvide. Related to #122.
- Audit.WebApi: Adding
AuditApiGlobalFilter
a configurable global filter as an alternative to decorate the controllers withAuditApiAttribute
.
- Audit.WebApi: Adding
IncludeResponseBodyFor
andExcludeResponseBodyFor
property onAuditApiAttribute
to allow conditionally Including/Excluding the Response Body from the log, only when certain Http Status codes are returned.
- Audit.Core: Adding
AuditDisabled()
method to fluent configuration API. - Audit.WebApi: Bypassing the filter when audit is globally disabled.
- Audit.Mvc: Bypassing the filter when audit is globally disabled.
- Audit.WebApi: Adding context wrapper interface IContextWrapper and injection mechanism for Audit.WebApi on full framework. Related to #124.
- Audit.NET.AzureDocumentDB: Allowing builders to pass the connection string, database and collection.
- Audit.NET.Elasticsearch: Fixing project URL reference on nuget package.
- Audit.NET.Elasticsearch: New Elasticsearch data provider
- Audit.NET.AzureDocumentDB: Cosmos DB provider enhancements by ovidiu [AT] ovidiudiaconescu.com. Caching azure client and allow passing the connection policy.
- Audit.WebApi: (#124) Making GetRequestBody protected virtual
- Audit.EntityFramework: Fix #120 exposing internal properties EventEntry.Entry (GetEntry) and EntityFrameworkEvent.DbContext (GetDbContext) on model objects.
- Audit.EntityFramework: Fix #122 allow exlude entities via the audit entity action. Now the AuditEntityAction can be a Func that return a boolean indicating whether to include the entity.
- Audit.Core: Exposing the global JSON serializer settings as a Configuration option to allow changing the serialization behavior for audit events.
- Audit.Core: Added a global audit switch off
Configuration.AuditDisabled
. - Audit.Core: Added
NullDataProvider
as an anternative to disable the audit logging.
- Audit.NET.MongoDB: Fix #114 - MongoDB Dataprovider Date serialization. Changing serialization mechanism to store the .NET DateTime as mongo datetime.
- Audit.EntityFramework: Added built-in mechanism to Ignore columns and Override column values on the audit logs.
- Audit.EntityFramework: (Core) fix PrimaryKeys, ForeignKeys and ColumnValues to log the column name instead of the property name.
- Audit.EntityFramework - Fix [#106]: DbEntityValidationException causes AuditEntityAction StackOverflowException.
- Audit.NET.AzureDocumentDB - Fix [#103]: Added FeedOptions argument to DocumentDb QueryEvents.
- Audit.EntityFramework - Fix [#104]: Multiple foreing key using the same field as key, causing audit to fail.
- Audit.WebApi and Audit.Mvc - Fix [#102]: NULL validation on HttpContext.Connection.RemoteIpAddress
- Audit.WebApi. Fix [#99]: Output not including body value when type was Microsoft.AspNetCore.Mvc.JsonResult
- Audit.WebApi: Added GetCurrentAuditScope(this HttpContext httpContext) extension to get the web api audit scope directly from an HttpContext
- Audit.NET.Postgres: Fix the insert command for the Postgres provider (#98)
- Added request body for AspNet Core Web API 2 via IncludeRequestBody property.
- Adding NETSTANDARD2.0 support to Audit.NET
- EventLog data provider available on NETCORE 2.0
- EventLog new MessageBuilder property to allow customizing the logged message
- Audit.DynamicProxy: allow setting the creation policy.
- Fixed #97: WebAPI missing response body when the response was a type inherited from ObjectResult, etc.
- Audit.MySql: refactor by bgrainger [AT] gmail.com to use MySqlConnector instead of MySql.Data to support real async calls.
- Async support to the AuditScope and all the data providers.
- Async support for Audit.EntityFramework, Audit.WCF, Audit.WebAPI and Audit.MVC extensions.
- Data retrieval methods for most of the data providers.
- New Custom Action OnEventSaved triggered right after the event is saved.
- Audit.EntityFramework: bug fixing #92
- New Audit.NET.log4net extension to log events with Apache log4net.