Ведение журнала с помощью Json Console печатает значения Юникода вместо символовC#

Место общения программистов C#
Ответить
Anonymous
 Ведение журнала с помощью Json Console печатает значения Юникода вместо символов

Сообщение Anonymous »

Я пытаюсь внедрить средство ведения журнала AddJsonConsole в свой API C#. Я заставил его работать, но вместо специальных символов он печатает их значение в Юникоде (например, \u003E вместо >). Есть ли способ настроить его для печати реальных символов?
Я настроил это так в Program.cs:

Код: Выделить всё

builder.Logging.ClearProviders();
builder.Logging.AddJsonConsole(options =>
{
options.IncludeScopes = false;
options.TimestampFormat = "HH:mm:ss";
options.JsonWriterOptions = new()
{
Indented = true,
};
});
Что дает такой результат:

Код: Выделить всё

{
"Timestamp": "11.26.19",
"EventId": 0,
"LogLevel": "Error",
"Category": "Mixorama.Server.Controllers.CocktailsController",
"Message": "Failed to create cocktail",
"Exception": "System.InvalidOperationException: The type of navigation \u0027CocktailEntity.Ingredients\u0027 is \u0027SelectListIterator\u003CIngredientEntity, IngredientEntity\u003E\u0027 which does not implement \u0027ICollection\u003CIngredientEntity\u003E\u0027.  Collection navigations must implement \u0027ICollection\u003C\u003E\u0027 of the target type.\r\n   at Microsoft.EntityFrameworkCore.Metadata.Internal.ClrICollectionAccessor\u00603.GetCollection(Object instance)\r\n   at Microsoft.EntityFrameworkCore.Metadata.Internal.ClrICollectionAccessor\u00603.GetOrCreateCollection(Object instance, Boolean forMaterialization)\r\n   at Microsoft.EntityFrameworkCore.Metadata.Internal.ClrICollectionAccessor\u00603.Add(Object entity, Object value, Boolean forMaterialization)\r\n   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.AddToCollection(INavigationBase navigationBase, Object value, Boolean forMaterialization)\r\n   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.NavigationFixer.AddToCollection(InternalEntityEntry entry, INavigationBase navigation, InternalEntityEntry value, Boolean fromQuery)\r\n   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.NavigationFixer.SetReferenceOrAddToCollection(InternalEntityEntry entry, INavigationBase navigation, InternalEntityEntry value, Boolean fromQuery)\r\n   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.NavigationFixer.ToDependentFixup(InternalEntityEntry dependentEntry, InternalEntityEntry principalEntry, IForeignKey foreignKey, Boolean fromQuery)\r\n   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.NavigationFixer.InitialFixup(InternalEntityEntry entry, InternalEntityEntry duplicateEntry, Boolean fromQuery)\r\n   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.NavigationFixer.StateChanged(InternalEntityEntry entry, EntityState oldState, Boolean fromQuery)\r\n   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntryNotifier.StateChanged(InternalEntityEntry entry, EntityState oldState, Boolean fromQuery)\r\n   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.FireStateChanged(EntityState oldState)\r\n   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.SetEntityState(EntityState oldState, EntityState newState, Boolean acceptChanges, Boolean modifyProperties)\r\n   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.SetEntityState(EntityState entityState, Boolean acceptChanges, Boolean modifyProperties, Nullable\u00601 forceStateWhenUnknownKey, Nullable\u00601 fallbackState)\r\n   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.EntityGraphAttacher.PaintAction(EntityEntryGraphNode\u00601 node)\r\n   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.EntityEntryGraphIterator.TraverseGraph[TState](EntityEntryGraphNode\u00601 node, Func\u00602 handleNode)\r\n   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.EntityGraphAttacher.AttachGraph(InternalEntityEntry rootEntry, EntityState targetState, EntityState storeGeneratedWithKeySetTargetState, Boolean forceStateWhenUnknownKey)\r\n   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.NavigationFixer.NavigationCollectionChanged(InternalEntityEntry entry, INavigationBase navigationBase, IEnumerable\u00601 added, IEnumerable\u00601 removed)\r\n   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntryNotifier.NavigationCollectionChanged(InternalEntityEntry entry, INavigationBase navigationBase, IEnumerable\u00601 added, IEnumerable\u00601 removed)\r\n   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.ChangeDetector.DetectNavigationChange(InternalEntityEntry entry, INavigationBase navigationBase)\r\n   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.ChangeDetector.LocalDetectChanges(InternalEntityEntry entry)\r\n   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.ChangeDetector.DetectChanges(IStateManager stateManager)\r\n   at Microsoft.EntityFrameworkCore.ChangeTracking.ChangeTracker.DetectChanges()\r\n   at Microsoft.EntityFrameworkCore.DbContext.TryDetectChanges()\r\n   at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)\r\n   at Mixorama.Server.Controllers.CocktailsController.CreateCocktail(CreateCocktailRequest request) in c:\\Users\\busks\\Code\\Mixorama\\Mixorama.Server\\Controllers\\CocktailsController.cs:line 75",
"State": {
"Message": "Failed to create cocktail",
"{OriginalFormat}": "Failed to create cocktail"
}
}
(обратите внимание, что поле Exception заполнено значениями Юникода)

Подробнее здесь: https://stackoverflow.com/questions/781 ... characters
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»