【发布时间】:2018-08-16 12:44:16
【问题描述】:
调试日志正在工作,但我无法让 TraceSource 工作。
这应该很简单吧? :)
我的“AppSettings.json”看起来像这样...
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Information"
},
"Debug": {
"LogLevel": {
"Default": "Information"
}
},
"Console": {
"LogLevel": {
"Default": "Information"
}
}
}
我的Startup 看起来像这样...
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddDebug();
// add Trace Source logging
SourceSwitch sourceSwitch = new SourceSwitch("sourceSwitch", "Logging Sample")
{
Level = SourceLevels.Information
};
loggerFactory.AddTraceSource(sourceSwitch, new TextWriterTraceListener(@"C:\temp\trace.log"));
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMvc();
}
我的示例控制器看起来像这样......
[Route("[controller]")]
public class ValuesController : Controller
{
private readonly ILogger<ValuesController> _logger;
private readonly ILogger _logger2;
public ValuesController(ILogger<ValuesController> logger, ILoggerFactory loggerFactory)
{
_logger = logger;
_logger2 = loggerFactory.CreateLogger("sourceSwitch");
}
// GET api/values
[HttpGet]
public async Task Get()
{
string myName = "demo";
_logger.LogError($"{myName} started.");
_logger2.LogError($"logger2 {myName} started.");
await Task.Delay(1000);
_logger.LogInformation($"{myName} finished.");
}
}
不幸的是,没有文件被写入(到)。
文件权限不是问题。我可以毫无问题地使用File.AppendAllText()。
我也找不到任何关于SourceSwitch 及其名称重要性的有意义的文档。我基本上遵循了这里列出的官方文档:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-2.1#tracesource-provider
【问题讨论】:
标签: c# logging asp.net-core .net-core