// Copyright (c) 2026 GeWuYou
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
using GFramework.Core.Abstractions.Logging;
using GFramework.Core.Logging;
namespace GFramework.Cqrs.Tests.Logging;
///
/// 供 CQRS 测试项目复用的最小日志记录器实现。
///
public sealed class TestLogger : AbstractLogger
{
private readonly List _logs = [];
///
/// 初始化测试日志记录器。
///
/// 日志名称。
/// 最小日志级别。
public TestLogger(string? name = null, LogLevel minLevel = LogLevel.Info) : base(name, minLevel)
{
}
///
/// 获取当前测试期间捕获到的日志条目。
///
public IReadOnlyList Logs => _logs;
///
/// 将日志写入内存,供断言使用。
///
/// 日志级别。
/// 日志消息。
/// 关联异常。
protected override void Write(LogLevel level, string message, Exception? exception)
{
_logs.Add(new LogEntry(level, message, exception));
}
///
/// 表示单条测试日志记录。
///
/// 日志级别。
/// 日志消息。
/// 关联异常。
public sealed record LogEntry(LogLevel Level, string Message, Exception? Exception);
}