.NET Core 2.0控制台日志无法正常工作的问题求助
解决.NET Core 2.0控制台日志不工作的问题
嘿,我来帮你搞定这个控制台日志没输出的问题!结合你给出的代码片段,我整理了几个最可能的原因和对应的解决办法:
1. 检查appsettings.json的日志级别配置
首先确认你的appsettings.json里的日志配置是否正确,.NET Core 2.0的控制台日志默认会读取Logging节点下的配置,如果级别设置得太高(比如只开了Error),低级别日志(比如Information、Debug)就不会显示。
正确的配置示例:
{ "Logging": { "LogLevel": { "Default": "Information", // 默认日志级别设为Information "Microsoft": "Warning" // 微软类库的日志设为Warning,避免过多冗余日志 }, "Console": { "LogLevel": { "Default": "Information" // 单独给控制台指定级别,优先级更高 } } } }
2. 确保Engine类正确注入ILogger
你的Engine类必须通过构造函数注入ILogger<Engine>才能使用日志服务,否则就算配置了日志,也拿不到实例输出内容:
public class Engine : IEngine { private readonly ILogger<Engine> _logger; // 构造函数注入ILogger<T> public Engine(ILogger<Engine> logger) { _logger = logger; } public void Run() { // 测试输出日志 _logger.LogInformation("Engine开始运行了!"); _logger.LogWarning("这是一条警告日志"); } }
3. 调用Engine类中的方法触发日志输出
你拿到IEngine实例后,必须调用里面包含日志代码的方法,才会有日志输出。比如:
var engine = serviceProvider.GetService<IEngine>(); engine.Run(); // 调用这个方法才会触发日志
4. 确认日志服务配置的完整性
检查你的服务注册代码,确保AddLogging的链式调用没有问题,完整的日志配置应该是这样的:
var serviceProvider = new ServiceCollection() .AddLogging(loggingBuilder => loggingBuilder .AddConfiguration(Configuration.GetSection("Logging")) .AddConsole() // 添加控制台日志提供器 .AddDebug()) // 添加调试窗口日志提供器 .AddSingleton<IEngine, Engine>() .BuildServiceProvider();
如果以上步骤都检查过,控制台日志应该就能正常工作了!
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

