Skip to content

Commit 54ed517

Browse files
committed
使用日志模板以提高日志性能
1 parent 1db976b commit 54ed517

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

WebApiClientCore/Attributes/FilterAttributes/LoggingFilterAttribute.cs

+5-3
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ namespace WebApiClientCore.Attributes
1111
/// </summary>
1212
public class LoggingFilterAttribute : ApiFilterAttribute
1313
{
14+
private static readonly Action<ILogger, LogMessage, Exception> logError = LoggerMessage.Define<LogMessage>(LogLevel.Error, 0, "{LogMessage}");
15+
private static readonly Action<ILogger, LogMessage, Exception?> logInformation = LoggerMessage.Define<LogMessage>(LogLevel.Information, 1, "{LogMessage}");
16+
1417
/// <summary>
1518
/// 获取或设置是否输出请求内容
1619
/// </summary>
@@ -151,14 +154,13 @@ protected virtual Task WriteLogAsync(ApiResponseContext context, LogMessage logM
151154
/// <param name="logMessage">日志消息</param>
152155
protected virtual void WriteLog(ILogger logger, LogMessage logMessage)
153156
{
154-
// .NET6之后可以适配LoggerMessage以实现高性能日志
155157
if (logMessage.Exception == null)
156158
{
157-
logger.LogInformation("{logMessage}", logMessage);
159+
logInformation(logger, logMessage, null);
158160
}
159161
else
160162
{
161-
logger.LogError("{logMessage}", logMessage);
163+
logError(logger, logMessage.ToExcludeException(), logMessage.Exception);
162164
}
163165
}
164166
}

0 commit comments

Comments
 (0)