我正在使用日志记录到内置于 .Net Core 框架的控制台输出。 这里是记录器的初始化:
var serviceCollection = new ServiceCollection();
serviceCollection.AddSingleton(new LoggerFactory()
.AddConsole());
对于日志记录,我正在使用
Microsoft.Extensions.Logging.LoggerExtension
的类和方法 Log...
这是登录我的应用程序的示例:
_logger.LogInformation(eventId, "Action is started.");
其中
_logger
是 ILogger<T>
类的实例,并在类构造函数中使用内置依赖注入进行初始化。
调用上述方法的结果控制台输出显示以下字符串:
info: NameSpaceName.ClassName[eventId] Action is started.
我想在执行 Log 方法时在控制台输出中显示日期时间,该输出指向时间,但 Log.. 方法似乎不包含任何允许显示日期时间的方法。
是否存在某种方法或附加类格式化程序,允许在控制台输出中显示操作日期时间,而不将其作为消息的一部分传递给方法?
Microsoft.Extensions.Logging.Console
的第3版中(这里是pr)。您可以通过设置 TimestampFormat
: 来激活此功能
new ServiceCollection()
.AddLogging(opt =>
{
opt.AddConsole(c =>
{
c.TimestampFormat = "[HH:mm:ss] ";
});
})
对于 ASP.NET Core,您可能更喜欢使用配置文件
appsettings.json
而不是直接将其连接到代码中。
{
"Logging": {
"Console": {
"TimestampFormat": "[yyyy-MM-dd HH:mm:ss] "
}
}
}
只要在
Host.CreateDefaultBuilder()
中调用 Program.cs
,即可开箱即用。
.NET 5(ASP.NET Core)中的示例:
public void ConfigureServices(IServiceCollection services)
{
services.AddLogging(options =>
{
options.AddSimpleConsole(c =>
{
c.TimestampFormat = "[yyyy-MM-dd HH:mm:ss] ";
// c.UseUtcTimestamp = true; // something to consider
});
});
// ...
}
输出示例:
[2020-12-13 12:55:44] info: Microsoft.Hosting.Lifetime[0] Application is shutting down...