Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Datetime 使用.Net Core控制台记录器记录事件日期时间_Datetime_Logging_.net Core - Fatal编程技术网

Datetime 使用.Net Core控制台记录器记录事件日期时间

Datetime 使用.Net Core控制台记录器记录事件日期时间,datetime,logging,.net-core,Datetime,Logging,.net Core,我使用日志记录来控制输出,这是.Net核心框架的内置功能。 以下是记录器的初始化: var serviceCollection = new ServiceCollection(); serviceCollection.AddSingleton(new LoggerFactory() .AddConsole()); 另外,对于日志记录,我正在使用Microsoft.Extensions.logging.LoggerExtensions类和方法Log… 以下

我使用日志记录来控制输出,这是.Net核心框架的内置功能。 以下是记录器的初始化:

var serviceCollection = new ServiceCollection();
serviceCollection.AddSingleton(new LoggerFactory()
                    .AddConsole());
另外,对于日志记录,我正在使用Microsoft.Extensions.logging.LoggerExtensions类和方法
Log…
以下是登录我的应用程序的示例:

_logger.LogInformation(eventId, "Action is started.");
其中,
\u logger
ILogger
类的实例,并在类构造函数中使用内置依赖项注入进行初始化。 调用上述方法后,控制台输出显示以下字符串:

info: NameSpaceName.ClassName[eventId] Action is started.
我想在控制台输出中显示日期时间,它指向执行Log方法时的时间,但似乎Log。。方法不包含任何允许显示日期时间的方法


是否存在一些方法或附加类格式化程序,允许在控制台输出中显示操作日期时间,而不将其作为消息的一部分传递给方法?

内置.NET核心控制台记录器不记录日期时间。跟踪以获取更多详细信息。最简单的解决方法是:

logger.Log(LogLevel.Information,1,someObj,null,(s,e)=>DateTime.Now+“”+s.ToString());
我编写了一个自动记录时间戳并执行其他有用的技巧:

[2017.06.15 23:46:44] info: WebHost[1]      Request starting HTTP/1.1 GET http://localhost:6002/hc

此功能已添加到的版本3中(以下是)。您可以通过设置
时间戳格式
来激活此功能:

newservicecolection()
.AddLogging(opt=>
{
opt.AddConsole(c=>
{
c、 TimestampFormat=“[HH:mm:ss]”;
});
})
在.NET 5(ASP.NET核心)中的示例:

public void配置服务(IServiceCollection服务)
{
services.AddLogging(选项=>
{
options.AddSimpleConsole(c=>
{
c、 TimestampFormat=“[yyyy-MM-dd HH:MM:ss]”;
/U.C.U.CultCimeTime=真;
});
});
// ...
}
输出示例:

[2020-12-13 12:55:44] info: Microsoft.Hosting.Lifetime[0] Application is shutting down...

非常感谢。你的图书馆太棒了。我刚刚添加了到Nuget软件包的链接,删除了对标准日志库的引用,更新了初始化,它可以按预期工作/在NetCore 3.0中将对此进行配置。有关有效的格式字符串,请参阅.NET 5中的内容,这已被弃用。请参阅@stefheynrath。不推荐使用的是
ConsoleLoggerFormat
而不是这里提到的
TimestampFormat
。我没有得到的一点是,这不会修改“调试”日志(在Visual Studio中找到)。在VS中,要查看带有时间戳的日志,应该将“show output From”修改为web服务器的日志。我不相信有什么方法可以将时间戳添加到调试日志中,因为AddDebug不接受任何参数。这在.Net中被标记为去擦洗5@Matt@stefheynrath不推荐使用的是
ConsoleLoggerFormat
,而不是这里提到的
TimestampFormat
。确实指定“在.NET 5中,对自定义格式的支持已添加到Microsoft.Extensions.Logging.console命名空间中的控制台日志中。”@Adarsha感谢您的澄清,我意外地执行了
options.AddConsole
而不是
options.AddSimpleConsole