mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
51 lines
1.4 KiB
C#
51 lines
1.4 KiB
C#
// Copyright (c) Microsoft. All rights reserved.
|
|
|
|
using System.Collections.Concurrent;
|
|
using Microsoft.Extensions.Logging;
|
|
using Xunit.Abstractions;
|
|
|
|
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
|
|
}
|
|
}
|
|
}
|