.NET Core 2.2 WebAPI记录某些内容

12 浏览
0 Comments

.NET Core 2.2 WebAPI记录某些内容

我有一个基本的WebAPI .NET Core 2.2项目,我正在尝试记录一些内容:

<代码>

// GET api/values

[HttpGet]

public ActionResult> Get()

{

System.Diagnostics.Trace.WriteLine("THIS IS A TEST");

System.Diagnostics.Debug.WriteLine("THIS IS A TEST");

return new string[] { "value1", "value2" };

}

</代码>

不幸的是,我的输出或控制台没有显示任何内容。我正在使用Visual Studio Code。这是我第一个.NET项目,所以请随时提问,我非常乐意回答。

更新

我刚刚下载了DebugView,我能够看到我记录的内容。仍在寻找一种不依赖于下载工具的替代解决方案,因为日志记录非常基本。

0
0 Comments

问题原因:使用NLog.Web.AspNetCore包进行日志记录时,可能会遇到无法记录日志的问题。

解决方法:

1. 确保已安装NLog.Web.AspNetCore包。

2. 在Startup.cs文件中进行配置,添加以下代码:

using NLog.Extensions.Logging;
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    // ...
    loggerFactory.AddNLog();
    app.AddNLogWeb();
    // ...
}

3. 在appsettings.json文件中配置NLog,添加以下代码:

"NLog": {

"autoReload": true,

"throwExceptions": true,

"internalLogLevel": "Error",

"internalLogFile": "logs/internallog.txt",

"extensions": {

"NLog.Web.AspNetCore": {

"assembly": "NLog.Web.AspNetCore"

}

},

"targets": {

"file": {

"type": "File",

"fileName": "logs/${shortdate}.log",

"layout": "${longdate}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}|${message} ${exception:format=tostring}"

}

},

"rules": {

"default": {

"final": true,

"rules": [

{

"logger": "*",

"minLevel": "Info",

"writeTo": "file"

}

]

}

}

}

4. 确保在Controller或其他需要记录日志的类中,使用ILogger进行日志记录,例如:

using Microsoft.Extensions.Logging;
private readonly ILogger _logger;
public HomeController(ILogger logger)
{
    _logger = logger;
}
public IActionResult Index()
{
    _logger.LogInformation("Logging something");
    return View();
}

0
0 Comments

问题出现的原因:

在ASP.NET Core应用程序中,我们可以使用内置的日志记录服务来记录日志。该服务与日志记录提供程序一起工作,这些提供程序将日志存储或显示到特定的介质中,例如控制台、调试器、跟踪监听器等。在这个例子中,我们使用了控制台提供程序来显示日志。

解决方法:

首先,在程序的主方法中添加控制台提供程序,然后通过构造函数注入ILogger实例,最后在需要记录日志的地方调用ILogger的对应方法。

具体的解决步骤如下:

Step 1:在程序的主方法中添加控制台提供程序

Step 2:在需要记录日志的类中通过构造函数注入ILogger实例

Step 3:调用ILogger的对应方法来记录日志

代码如下:

public static void Main(string[] args)
{
    var host = CreateWebHostBuilder(args).Build();
    var logger = host.Services.GetRequiredService>();
    logger.LogInformation("Seeded the database.");
    host.Run();
}
public class AboutModel
{
    private readonly ILogger _logger;
    public AboutModel(ILogger logger)
    {
        _logger = logger;
    }
    public void OnGet()
    {
        _logger.LogInformation("Message displayed: {Message}", Message);
    }
}

通过以上步骤,我们就可以在ASP.NET Core应用程序中使用控制台提供程序来记录日志了。

0