我有一个剃刀组件,我想添加日志记录。我应该使用什么类名?当我需要这样做时,我是否必须使用代码隐藏?
假设我的组件名为MyRazor.razor
@code {
[Inject]
public ILogger<MYCLASS> Logger { get; set; }
}
MyRazor.razor
@code {
[Inject] public ILogger<MyRazor> Logger { get; set; }
}
Razor从文件名派生类名。
一种更好的方法,不需要为所有组件注入单独的记录器。
services.AddScoped<ILogger, Logger<LoggingBroker>>();
services.AddScoped<ILoggingBroker, LoggingBroker>();
public class LoggingBroker : ILoggingBroker
{
private readonly ILogger logger;
public LoggingBroker(ILogger logger) => this.logger = logger;
public void LogCritical(Exception exception) =>
this.logger.LogCritical(exception, exception.Message);
public void LogDebug(string message) => this.logger.LogDebug(message);
public void LogError(Exception exception) =>
this.logger.LogError(exception, exception.Message);
public void LogInformation(string message) => this.logger.LogInformation(message);
public void LogTrace(string message) => this.logger.LogTrace(message);
public void LogWarning(string message) => this.logger.LogWarning(message);
}
然后注入你的ILoggingBroker
,我用它来允许单元测试。
@code {
[Inject]
public ILoggingBroker Logger { get; set; }
}
关于:
当我需要做这个时,我必须使用代码隐藏吗
没有.razor
生成的类不需要代码隐藏。
注意:如果需要,我可以提供ILoggingBroker
接口,但只是从提供的类中提取它。