如何解决带有 .NetCore 依赖注入的 Log4Net 无法输出方法名称
我尝试在我的 ASP.Net Core 应用程序中使用 log4net。
当我使用经典方式获取 ILog 时:
private readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
一切正常
但是当我将 .NetCore ILogger 与依赖注入一起使用时
public Worker2(ILogger<Worker2> logger,ILifetimeScope scope)
{
this._log = logger;
this.LifetimeScope = scope;
}
输出方法名称总是显示“LogMessage”
我的记录器设置是这样的
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureLogging(logger =>
{
logger.ClearProviders();
logger.AddLog4Net("log4net.config",true);
})
.ConfigureContainer<ContainerBuilder>(builder =>
{
builder.RegisterType<TestOBJ1>().InstancePerMatchingLifetimeScope("Status");
})
.ConfigureServices((hostContext,services) =>
{
services.AddHostedService<Worker>();
services.AddHostedService<Worker2>();
});
我的 log4net 配置文件在这里
<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d{HH:mm:ss} [%method] %m%n" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="ConsoleAppender" />
</root>
</log4net>
有没有什么办法让ILogger输出当前的方法名?
更新: 顺便说一句,这是我的 Nuget 包
<ItemGroup>
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="7.1.0" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.8" />
<PackageReference Include="Microsoft.Extensions.Logging.Log4Net.AspNetCore" Version="5.0.0" />
</ItemGroup>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。