Datetime 使用.Net Core控制台记录器记录事件日期时间
我使用日志记录来控制输出,这是.Net核心框架的内置功能。 以下是记录器的初始化: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… 以下
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