J'utilise EF Core 2.1.1 à l'aide de MySql et j'ai le code suivant pour activer la journalisation du noyau ef traduit en requêtes SQL
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.EnableSensitiveDataLogging();
}
Je ne vois cependant rien dans les journaux et je ne sais pas pourquoi.
En utilisant EF Core 2.2 avec Visual Studio 2019 et SQL Server, j'ai pu obtenir l'option EnableSensitiveDataLogging pour fonctionner en utilisant la configuration suivante.
Dans votre classe Startup.cs,
Ajoutez le service de journalisation à votre méthode ConfigureServices. Je filtre la journalisation dans les commandes de base de données et le niveau de journalisation des informations,
services.AddLogging(loggingBuilder => {
loggingBuilder.AddConsole()
.AddFilter(DbLoggerCategory.Database.Command.Name, LogLevel.Information);
loggingBuilder.AddDebug();
});
Maintenant, mettez à jour votre DBContext pour activer la journalisation des données sensibles,
services.AddDbContext<MyDbContext>(options => {
options.UseSqlServer(_configuration.GetConnectionString("MyDbConnection"));
options.EnableSensitiveDataLogging(true);
});
Une fois que vous avez configuré votre démarrage, vous verrez maintenant les commandes SQL et leurs données sensibles apparaître dans notre fenêtre de sortie dans Visual Studio (Débogage ... Windows ... Sortie) comme indiqué ci-dessous,
Microsoft.EntityFrameworkCore.Database.Command:Information: Executed DbCommand (3ms)
[Parameters=[@p1='aaa' (Nullable = false) (Size = 450),
@p2='bbb' (Size = 4000),
@p0='New Column Value' (Size = 4000)],
CommandType='Text', CommandTimeout='30']
SET NOCOUNT ON;
UPDATE [MyTableName] SET [MyColumnName] = @p0
WHERE [Id] = @p1 AND [OtherColumn] = @p2;
SELECT @@ROWCOUNT;
Il m'a fallu un certain temps pour comprendre cela également. Je n'ai pas pu non plus faire apparaître les données sensibles dans le journal en utilisant OnConfiguring dans la classe DBContext.
J'espère que cela aide même s'il utilise SQL Server et non MySQL.
REMARQUE! Veillez à désactiver la journalisation des données sensibles lors du déploiement en production.