db620d33df
dotnet-build-and-test / dotnet-test-functions (push) Has been cancelled
dotnet-build-and-test / paths-filter (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Debug, windows-latest, net9.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Release, ubuntu-latest, net10.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Release, ubuntu-latest, net8.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Release, windows-latest, net472) (push) Has been cancelled
dotnet-build-and-test / dotnet-test (Release, integration, true, ubuntu-latest, net10.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-test (Release, integration, true, windows-latest, net472) (push) Has been cancelled
dotnet-build-and-test / dotnet-foundry-hosted-it (push) Has been cancelled
dotnet-build-and-test / dotnet-build-and-test-check (push) Has been cancelled
dotnet-build-and-test / Integration Test Report (push) Has been cancelled
CodeQL / Analyze (csharp) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
50 lines
1.4 KiB
C#
50 lines
1.4 KiB
C#
// Copyright (c) Microsoft. All rights reserved.
|
|
|
|
using System.Collections.Concurrent;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
namespace Microsoft.Agents.AI.DurableTask.IntegrationTests.Logging;
|
|
|
|
internal sealed class TestLogger(string category, ITestOutputHelper output) : ILogger
|
|
{
|
|
private readonly string _category = category;
|
|
private readonly ITestOutputHelper _output = output;
|
|
private readonly ConcurrentQueue<LogEntry> _entries = new();
|
|
|
|
public IReadOnlyCollection<LogEntry> GetLogs() => this._entries;
|
|
|
|
public void ClearLogs() => this._entries.Clear();
|
|
|
|
IDisposable? ILogger.BeginScope<TState>(TState state) => null;
|
|
|
|
bool ILogger.IsEnabled(LogLevel logLevel) => true;
|
|
|
|
void ILogger.Log<TState>(
|
|
LogLevel logLevel,
|
|
EventId eventId,
|
|
TState state,
|
|
Exception? exception,
|
|
Func<TState, Exception?, string> formatter)
|
|
{
|
|
LogEntry entry = new(
|
|
category: this._category,
|
|
level: logLevel,
|
|
eventId: eventId,
|
|
exception: exception,
|
|
message: formatter(state, exception),
|
|
state: state,
|
|
contextProperties: []);
|
|
|
|
this._entries.Enqueue(entry);
|
|
|
|
try
|
|
{
|
|
this._output.WriteLine(entry.ToString());
|
|
}
|
|
catch (InvalidOperationException)
|
|
{
|
|
// Expected when tests are shutting down
|
|
}
|
|
}
|
|
}
|