Skip to content

Commit c2c185d

Browse files
committed
Add LoggerMessageTest
1 parent 9b61b21 commit c2c185d

9 files changed

Lines changed: 235 additions & 42 deletions

File tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
**/_Generated

src/Tests/LoggerMessageTest/LoggerMessageAttributeTest.cs

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,29 @@ public class LoggerMessageAttributeTest
66
{
77
private readonly ILogger<LoggerMessageAttributeTest> _logger;
88

9-
public LoggerMessageAttributeTest(ILogger<LoggerMessageAttributeTest> logger) => _logger = logger;
9+
public LoggerMessageAttributeTest(ILogger<LoggerMessageAttributeTest> logger)
10+
{
11+
_logger = logger;
12+
}
13+
14+
#region Methods
15+
16+
public void DynamicLevel_Error_Test()
17+
{
18+
_logger.LogWithDynamicLogLevel(LogLevel.Error, "error", "gz");
19+
}
20+
21+
public void DynamicLevel_Info_Test()
22+
{
23+
_logger.LogWithDynamicLogLevel(LogLevel.Information, "info", "gz");
24+
}
25+
26+
public void LogError_WithoutThis_Test()
27+
{
28+
#pragma warning disable CA2201 // Do not raise reserved exception types
29+
LoggerMessageAttributeExtensions.FailedWithoutThis(_logger, new Exception("test WithoutThis"));
30+
#pragma warning restore CA2201 // Do not raise reserved exception types
31+
}
1032

1133
public void LogErrorTest()
1234
{
@@ -22,25 +44,11 @@ public void LogErrorTest()
2244
}
2345
}
2446

25-
public void LogError_WithoutThis_Test()
26-
{
27-
#pragma warning disable CA2201 // Do not raise reserved exception types
28-
LoggerMessageAttributeExtensions.FailedWithoutThis(_logger, new Exception("test WithoutThis"));
29-
#pragma warning restore CA2201 // Do not raise reserved exception types
30-
}
31-
3247
public void LogInfo_WithParameter_Test()
3348
{
3449
_logger.CityInfo("sz", "gz");
3550
}
3651

37-
public void DynamicLevel_Info_Test()
38-
{
39-
_logger.LogWithDynamicLogLevel(LogLevel.Information, "info", "gz");
40-
}
52+
#endregion
4153

42-
public void DynamicLevel_Error_Test()
43-
{
44-
_logger.LogWithDynamicLogLevel(LogLevel.Error, "error", "gz");
45-
}
4654
}
Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,24 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>net6.0</TargetFramework>
5+
<TargetFramework>net9.0</TargetFramework>
66
<ImplicitUsings>enable</ImplicitUsings>
77
<Nullable>enable</Nullable>
8+
9+
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
10+
<CompilerGeneratedFilesOutputPath>_Generated</CompilerGeneratedFilesOutputPath>
811
</PropertyGroup>
912

1013
<ItemGroup>
11-
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" />
12-
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.0" />
13-
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="6.0.0" />
14+
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.4" />
15+
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.4" />
16+
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="9.0.4" />
17+
</ItemGroup>
18+
19+
<ItemGroup>
20+
<Compile Remove="_Generated\**\*.g.cs" />
21+
<None Include="_Generated\**\*.g.cs" />
1422
</ItemGroup>
1523

1624
</Project>
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
using Microsoft.Extensions.Logging;
2+
3+
namespace LoggerMessageTest;
4+
5+
public partial class LoggingSample
6+
{
7+
8+
#region Constants & Statics
9+
10+
[LoggerMessage(EventId = 20, Level = LogLevel.Critical, Message = "Value is {Value:E}")]
11+
public static partial void UsingFormatSpecifier(ILogger logger, double value);
12+
13+
#endregion
14+
15+
private readonly ILogger _logger;
16+
17+
public LoggingSample(ILogger logger)
18+
{
19+
_logger = logger;
20+
}
21+
22+
#region Methods
23+
24+
[LoggerMessage(EventId = 9, Level = LogLevel.Trace, Message = "Fixed message", EventName = "CustomEventName")]
25+
#pragma warning disable CA1822 // Mark members as static
26+
public partial void LogWithCustomEventName();
27+
#pragma warning restore CA1822 // Mark members as static
28+
29+
[LoggerMessage(EventId = 10, Message = "Welcome to {City} {Province}!")]
30+
#pragma warning disable CA1822 // Mark members as static
31+
public partial void LogWithDynamicLogLevel(string city, LogLevel level, string province);
32+
#pragma warning restore CA1822 // Mark members as static
33+
34+
#pragma warning disable CA1822 // Mark members as static
35+
public void TestLogging()
36+
#pragma warning restore CA1822 // Mark members as static
37+
{
38+
LogWithCustomEventName();
39+
40+
LogWithDynamicLogLevel("Vancouver", LogLevel.Warning, "BC");
41+
LogWithDynamicLogLevel("Vancouver", LogLevel.Information, "BC");
42+
43+
UsingFormatSpecifier(_logger, 12345.6789);
44+
}
45+
46+
#endregion
47+
48+
}
Lines changed: 37 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,46 @@
1-
using System.Text.Json;
2-
using LoggerMessageTest;
31
using Microsoft.Extensions.DependencyInjection;
42
using Microsoft.Extensions.Logging;
3+
using System.Text.Json;
54

6-
//new DefineTest().LogTest();
7-
//new DefineTest().LogExtensionTest();
5+
namespace LoggerMessageTest;
86

9-
var services = new ServiceCollection();
10-
services.AddLogging(builder =>
7+
internal sealed class Program
118
{
12-
builder.AddJsonConsole(options => options.JsonWriterOptions = new JsonWriterOptions { Indented = true });
13-
//builder.AddConsole();
14-
});
159

16-
services.AddTransient<LoggerMessageAttributeTest>();
10+
#region Constants & Statics
11+
12+
private static void Main(string[] args)
13+
{
14+
//new DefineTest().LogTest();
15+
//new DefineTest().LogExtensionTest();
16+
17+
var services = new ServiceCollection();
18+
_ = services.AddLogging(
19+
builder =>
20+
{
21+
_ = builder.AddJsonConsole(
22+
options => options.JsonWriterOptions = new JsonWriterOptions { Indented = true });
23+
//builder.AddConsole();
24+
});
25+
26+
_ = services.AddTransient<LoggerMessageAttributeTest>();
27+
28+
var factory = new DefaultServiceProviderFactory();
29+
var serviceProvider = factory.CreateServiceProvider(services);
30+
31+
var attributeTest = serviceProvider.GetRequiredService<LoggerMessageAttributeTest>();
32+
attributeTest.LogErrorTest();
33+
//attributeTest.LogError_WithoutThis_Test();
34+
//attributeTest.LogInfo_WithParameter_Test();
35+
//attributeTest.DynamicLevel_Info_Test();
36+
//attributeTest.DynamicLevel_Error_Test();
1737

18-
var factory = new DefaultServiceProviderFactory();
19-
var serviceProvider = factory.CreateServiceProvider(services);
38+
Thread.Sleep(1000);
39+
}
2040

21-
var attributeTest = serviceProvider.GetRequiredService<LoggerMessageAttributeTest>();
22-
attributeTest.LogErrorTest();
23-
//attributeTest.LogError_WithoutThis_Test();
24-
//attributeTest.LogInfo_WithParameter_Test();
25-
//attributeTest.DynamicLevel_Info_Test();
26-
//attributeTest.DynamicLevel_Error_Test();
41+
#endregion
2742

28-
Thread.Sleep(1000);
43+
private Program()
44+
{
45+
}
46+
}

src/plugins/SerilogTest/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
**/logs
2+
**/_Generated

src/plugins/SerilogTest/Controllers/LogTestController.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ public IActionResult LogErrorThrow(int? abc)
5353

5454
[HttpGet("LoggerScope")]
5555
[HttpLogging(HttpLoggingFields.RequestPropertiesAndHeaders)]
56-
[ProducesResponseType<WeatherForecast>(((int)HttpStatusCode.OK))]
5756
public IActionResult LoggerScope()
5857
{
5958
using (_logger.BeginScope("scope 1"))
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
using Microsoft.AspNetCore.Mvc;
2+
using System.Net;
3+
4+
namespace SerilogTest.Controllers;
5+
6+
[ApiController]
7+
[Route("[controller]")]
8+
public partial class LoggerMessageTestController : ControllerBase
9+
{
10+
11+
#region Constants & Statics
12+
13+
private static void InnerMehtod(int? abc)
14+
{
15+
Console.WriteLine(abc);
16+
17+
throw new MyException("the InnerMehtod throw");
18+
}
19+
20+
#endregion
21+
22+
private readonly ILogger<LoggerMessageTestController> _logger;
23+
24+
public LoggerMessageTestController(ILogger<LoggerMessageTestController> logger)
25+
{
26+
_logger = logger;
27+
}
28+
29+
#region Methods
30+
31+
[HttpGet("DestructObject")]
32+
[ProducesResponseType<WeatherForecast>(((int)HttpStatusCode.OK))]
33+
public IActionResult DestructObject()
34+
{
35+
var dateTime = DateTime.Now.AddDays(1);
36+
var data = new WeatherForecast
37+
{
38+
Date = DateOnly.FromDateTime(dateTime),
39+
DateTime = dateTime,
40+
DateTimeOffset = DateTimeOffset.UtcNow,
41+
TemperatureC = Random.Shared.Next(-20, 55),
42+
Summary = "summary"
43+
};
44+
45+
_logger.LogInformation("UseLogContext {@Data}", data);
46+
47+
return Ok(data);
48+
}
49+
50+
[HttpGet("LogErrorThrow")]
51+
public IActionResult LogErrorThrow(int? abc)
52+
{
53+
try
54+
{
55+
InnerMehtod(abc);
56+
}
57+
catch (Exception ex)
58+
{
59+
LogErrorMessage(ex);
60+
}
61+
62+
return Ok();
63+
}
64+
65+
[HttpGet("LoggerScope")]
66+
public IActionResult LoggerScope()
67+
{
68+
using (_logger.BeginScope("scope 1"))
69+
{
70+
// ["scope 1"]
71+
LogScopeMessage("sth. 1");
72+
73+
using (_logger.BeginScope("scope 2"))
74+
{
75+
// ["scope 1", "scope 2"]
76+
LogScopeMessage("sth. 2");
77+
}
78+
}
79+
80+
return Ok();
81+
}
82+
83+
#endregion
84+
85+
#region Logger
86+
87+
[NonAction]
88+
[LoggerMessage(100, LogLevel.Information, "{Message}")]
89+
public partial void LogScopeMessage(string message);
90+
91+
[NonAction]
92+
[LoggerMessage(200, LogLevel.Error, "there is a error.")]
93+
public partial void LogErrorMessage(Exception ex);
94+
95+
[NonAction]
96+
[LoggerMessage(300, LogLevel.Information, "@{Data}")]
97+
public partial void LogDestructObject(WeatherForecast data);
98+
99+
#endregion
100+
101+
}

src/plugins/SerilogTest/SerilogTest.csproj

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1-
<Project Sdk="Microsoft.NET.Sdk.Web">
1+
<Project Sdk="Microsoft.NET.Sdk.Web">
22

33
<PropertyGroup>
44
<TargetFramework>net9.0</TargetFramework>
55
<Nullable>enable</Nullable>
66
<ImplicitUsings>enable</ImplicitUsings>
7+
8+
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
9+
<CompilerGeneratedFilesOutputPath>_Generated</CompilerGeneratedFilesOutputPath>
710
</PropertyGroup>
811

912
<ItemGroup>
@@ -18,6 +21,12 @@
1821
<PackageReference Include="Serilog.Exceptions" Version="8.4.0" />
1922
<PackageReference Include="Serilog.Exceptions.EntityFrameworkCore" Version="8.4.0" />
2023
<PackageReference Include="Serilog.Sinks.Async" Version="2.1.0" />
24+
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.4" />
25+
</ItemGroup>
26+
27+
<ItemGroup>
28+
<Compile Remove="_Generated\**\*.g.cs" />
29+
<None Include="_Generated\**\*.g.cs" />
2130
</ItemGroup>
2231

2332
</Project>

0 commit comments

Comments
 (0)