using System; using System.Collections.Generic; using System.Diagnostics; using Util.Helpers; using Util.Logging.Tests.Samples; using Xunit; namespace Util.Logging.Tests; /// /// ExceptionLess日志操作测试 /// public class LogTest { /// /// 日志操作 /// private readonly ILog _log; /// /// 测试初始化 /// public LogTest( IServiceProvider serviceProvider, ILog log, ILogContextAccessor accessor ) { Ioc.SetServiceProviderAction( () => serviceProvider ); _log = log; accessor.Context = new LogContext { Stopwatch = Stopwatch.StartNew(), TraceId = Id.Create() }; } /// /// 测试写跟踪日志 - 设置简单消息 /// [Fact] public void TestLogTrace_Message_1() { _log.Message( $"TestTrace_Message_1_{Id.Create()}" ).LogTrace(); } /// /// 测试写跟踪日志 - 给日志消息传递1个参数 /// [Fact] public void TestLogTrace_Message_2() { _log.Message( "TestTrace_Message_2_{ProductCode}",Id.Create() ).LogTrace(); } /// /// 测试写跟踪日志 - 给日志消息传递2个参数 /// [Fact] public void TestLogTrace_Message_3() { _log.Message( "TestTrace_Message_3_{id}_{code}", $"id_{Id.Create()}", $"code_{Id.Create()}" ).LogTrace(); } /// /// 测试写跟踪日志 - 多次调用Message方法设置日志消息 /// [Fact] public void TestLogTrace_Message_4() { _log.Message( "TestTrace_Message_4_{id}_{code}_", $"id_{Id.Create()}", $"code_{Id.Create()}" ) .Message( "{name}_{note}", $"name_{Id.Create()}", $"note_{Id.Create()}" ) .LogTrace(); } /// /// 测试写跟踪日志 - 设置@消息 - 对象 /// [Fact] public void TestLogTrace_Message_5() { _log.Message( "TestTrace_Message_5,@Product={@Product}", new Product{Code = "a",Name = "b",Price = 123} ) .LogTrace(); } /// /// 测试写跟踪日志 - 设置$消息 - 对象 /// [Fact] public void TestLogTrace_Message_6() { _log.Message( "TestTrace_Message_6,$Product={$Product}", new Product { Code = "a", Name = "b", Price = 123 } ) .LogTrace(); } /// /// 测试写跟踪日志 - 设置@消息 - 字典 /// [Fact] public void TestLogTrace_Message_7() { _log.Message( "TestTrace_Message_7,@Dictionary={@Dictionary}", new Dictionary { {"Code","a"},{"Name","b"},{"Price",123} } ) .LogTrace(); } /// /// 测试写跟踪日志 - 设置$消息 - 字典 /// [Fact] public void TestLogTrace_Message_8() { _log.Message( "TestTrace_Message_8,$Dictionary={$Dictionary}", new Dictionary { { "Code", "a" }, { "Name", "b" }, { "Price", 123 } } ) .LogTrace(); } /// /// 测试写跟踪日志 - 同时设置各属性 /// [Fact] public void TestLogTrace_Message_9() { _log.EventId( 119 ) .Message( "TestTrace_Message_9_{id}", $"id_{Id.Create()}" ) .State( new Product { Code = "a", Name = "b", Price = 123 } ) .Property( "Age", "18" ) .Property( "Description", "hello" ) .LogTrace(); } /// /// 测试写跟踪日志 - 设置自定义扩展属性 /// [Fact] public void TestLogTrace_Property_1() { _log.EventId( 120 ) .Property( "Age", "18" ) .Property( "Description", "hello" ) .LogTrace(); } /// /// 测试写跟踪日志 - 设置自定义扩展属性和状态对象 /// [Fact] public void TestLogTrace_Property_2() { _log.EventId( 121 ) .Property( "Age", "18" ) .Property( "Description", "hello" ) .State( new Product { Code = "a", Name = "b", Price = 123 } ) .LogTrace(); } }