FileContextCore/Diagnostics/Internal/FileContextLoggerExtensions.cs
// Copyright (c) morrisjdev. All rights reserved.
// Original copyright (c) .NET Foundation. All rights reserved.
// Modified version by morrisjdev
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Generic;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Diagnostics;
using Microsoft.EntityFrameworkCore.Update;
// ReSharper disable once CheckNamespace
namespace FileContextCore.Internal
{
public static class FileContextLoggerExtensions
{
public static void TransactionIgnoredWarning(
[NotNull] this IDiagnosticsLogger<DbLoggerCategory.Database.Transaction> diagnostics)
{
var definition = FileContextResources.LogTransactionsNotSupported(diagnostics);
var warningBehavior = definition.GetLogBehavior(diagnostics);
if (warningBehavior != WarningBehavior.Ignore)
{
definition.Log(diagnostics, warningBehavior);
}
if (diagnostics.DiagnosticSource.IsEnabled(definition.EventId.Name))
{
diagnostics.DiagnosticSource.Write(
definition.EventId.Name,
new EventData(
definition,
(d, _) => ((EventDefinition)d).GenerateMessage()));
}
}
public static void ChangesSaved(
[NotNull] this IDiagnosticsLogger<DbLoggerCategory.Update> diagnostics,
[NotNull] IEnumerable<IUpdateEntry> entries,
int rowsAffected)
{
var definition = FileContextResources.LogSavedChanges(diagnostics);
var warningBehavior = definition.GetLogBehavior(diagnostics);
if (warningBehavior != WarningBehavior.Ignore)
{
definition.Log(
diagnostics,
warningBehavior,
rowsAffected);
}
if (diagnostics.DiagnosticSource.IsEnabled(definition.EventId.Name))
{
diagnostics.DiagnosticSource.Write(
definition.EventId.Name,
new SaveChangesEventData(
definition,
ChangesSaved,
entries,
rowsAffected));
}
}
private static string ChangesSaved(EventDefinitionBase definition, EventData payload)
{
var d = (EventDefinition<int>)definition;
var p = (SaveChangesEventData)payload;
return d.GenerateMessage(p.RowsAffected);
}
}
}