Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/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
C# 将日期添加到ASP.NETCore2.1默认记录器_C#_Asp.net Core_Logging - Fatal编程技术网

C# 将日期添加到ASP.NETCore2.1默认记录器

C# 将日期添加到ASP.NETCore2.1默认记录器,c#,asp.net-core,logging,C#,Asp.net Core,Logging,我使用的是ASP.NET的默认记录器,它可以创建这样的日志 info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0] User profile is available. Using 'C:\Users\Test\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt key

我使用的是ASP.NET的默认记录器,它可以创建这样的日志

info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0]
      User profile is available. Using 'C:\Users\Test\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.
warn: Microsoft.EntityFrameworkCore.Model.Validation[10400]
      Sensitive data logging is enabled. Log entries and exception messages may include sensitive application data, this mode should only be enabled during development.
但我想把DateTime附加到它上面

[2019.12.19 10:00] info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0]
      User profile is available. Using 'C:\Users\Test\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.
[2019.12.19 10:00] warn: Microsoft.EntityFrameworkCore.Model.Validation[10400]
      Sensitive data logging is enabled. Log entries and exception messages may include sensitive application data, this mode should only be enabled during development.
我尝试使用Serilog,但无法获取默认日志,只能获取我直接创建的


日志错误(“错误”)已显示。

在ASP.Net Core中,您可以将记录器配置为包含时间戳

public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateWebHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
            .ConfigureLogging(logger=>
            {
                logger.AddConsole(x => x.TimestampFormat = "[HH:mm:ss] "); 
            })
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>().UseIIS();
            });
    }
公共类程序
{
公共静态void Main(字符串[]args)
{
CreateWebHostBuilder(args.Build().Run();
}
公共静态IHostBuilder CreateWebHostBuilder(字符串[]args)=>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(记录器=>
{
logger.AddConsole(x=>x.TimestampFormat=“[HH:mm:ss]”);
})
.ConfigureWebHostDefaults(webBuilder=>
{
webBuilder.UseStartup().UseIIS();
});
}

在ASP.Net Core中,您可以将记录器配置为包含时间戳

public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateWebHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
            .ConfigureLogging(logger=>
            {
                logger.AddConsole(x => x.TimestampFormat = "[HH:mm:ss] "); 
            })
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>().UseIIS();
            });
    }
公共类程序
{
公共静态void Main(字符串[]args)
{
CreateWebHostBuilder(args.Build().Run();
}
公共静态IHostBuilder CreateWebHostBuilder(字符串[]args)=>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(记录器=>
{
logger.AddConsole(x=>x.TimestampFormat=“[HH:mm:ss]”);
})
.ConfigureWebHostDefaults(webBuilder=>
{
webBuilder.UseStartup().UseIIS();
});
}
在github上,内置的.NET Core控制台记录器不记录日期时间

您可以尝试自动记录时间戳

1.使用AddConsoleAdvanced方法自定义LoggerBuilderExtensions

public static class LoggerBuilderExtensions
{
    /// <summary>Adds a console logger named 'ConsoleAdvanced' to the factory.</summary>
    /// <param name="builder">The <see cref="T:Microsoft.Extensions.Logging.ILoggingBuilder" /> to use.</param>
    /// <param name="loggingSection"></param>
    public static ILoggingBuilder AddConsoleAdvanced(this ILoggingBuilder builder,
        IConfiguration loggingSection)
    {
        if (loggingSection == null)
            throw new ArgumentNullException(nameof(loggingSection));

        builder.Services.TryAddEnumerable(
            ServiceDescriptor.Singleton<ILoggerProvider,
                AdvancedConsoleLoggerProvider>());

        //We can't read the result of logging.AddConfiguration mtd here, cause it registers internal classes (without public interfaces).
        //So, a configuration section must be passed to configure the logger.
        builder.Services.TryAdd(
            ServiceDescriptor.Singleton<IConsoleLoggerSettings>(
                provider => new ConfigurationConsoleLoggerSettings(loggingSection)));

        return builder;
    }

    /// <summary>Adds a console logger named 'ConsoleAdvanced' to the factory.</summary>
    /// <param name="builder">The <see cref="T:Microsoft.Extensions.Logging.ILoggingBuilder" /> to use.</param>
    public static ILoggingBuilder AddConsoleAdvanced(this ILoggingBuilder builder)
    {
        builder.Services.TryAddEnumerable(
            ServiceDescriptor.Singleton<ILoggerProvider, AdvancedConsoleLoggerProvider>());

        builder.Services.TryAdd(
            ServiceDescriptor.Singleton<IConsoleLoggerSettings>(provider =>ConsoleLoggerSettings.Optimized));

        return builder;
    }

    /// <summary>Adds a console logger named 'ConsoleAdvanced' to the factory.</summary>
    /// <param name="builder">The <see cref="T:Microsoft.Extensions.Logging.ILoggingBuilder" /> to use.</param>
    /// <param name="settings">The formatting settings, timezone, etc.</param>
    public static ILoggingBuilder AddConsoleAdvanced(this ILoggingBuilder builder,
        IConsoleLoggerSettings settings)
    {
        if (settings == null)
            throw new ArgumentNullException(nameof(settings));

        builder.Services.TryAddEnumerable(
            ServiceDescriptor.Singleton<ILoggerProvider, AdvancedConsoleLoggerProvider>());

        builder.Services.TryAddEnumerable(
            ServiceDescriptor.Singleton(provider => settings));

        return builder;
    }
}
公共静态类LoggerBuilderExtensions
{
///将名为“ConsoleAdvanced”的控制台记录器添加到工厂。
///要使用的。
/// 
公共静态ILoggingBuilder AddConsoleAdvanced(此ILoggingBuilder,
I配置记录(第节)
{
如果(loggingSection==null)
抛出新ArgumentNullException(nameof(loggingSection));
builder.Services.TryAddEnumerable(
ServiceDescriptor.Singleton());
//我们无法在此处读取logging.AddConfiguration mtd的结果,因为它注册内部类(没有公共接口)。
//因此,必须传递一个配置部分来配置记录器。
builder.Services.TryAdd(
ServiceDescriptor.Singleton(
provider=>new ConfigurationConsoleLogger设置(loggingSection));
返回生成器;
}
///将名为“ConsoleAdvanced”的控制台记录器添加到工厂。
///要使用的。
公共静态ILoggingBuilder AddConsoleAdvanced(此ILoggingBuilder)
{
builder.Services.TryAddEnumerable(
ServiceDescriptor.Singleton());
builder.Services.TryAdd(
Singleton(provider=>ConsoleLoggerSettings.Optimized));
返回生成器;
}
///将名为“ConsoleAdvanced”的控制台记录器添加到工厂。
///要使用的。
///格式设置、时区等。
公共静态ILoggingBuilder AddConsoleAdvanced(此ILoggingBuilder,
IConsoleLogger(设置)
{
如果(设置==null)
抛出新ArgumentNullException(nameof(settings));
builder.Services.TryAddEnumerable(
ServiceDescriptor.Singleton());
builder.Services.TryAddEnumerable(
Singleton(provider=>settings));
返回生成器;
}
}
2.自定义记录器

     public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .ConfigureLogging(loggingBuilder =>
            {
                loggingBuilder.AddConsoleAdvanced(new ConsoleLoggerSettings()
                {
                    IncludeLineBreak = false,
                    IncludeTimestamp = true,
                    IncludeZeroEventId = false,
                    IncludeLogNamespace = false
                });

            })
            .UseStartup<Startup>();
公共静态IWebHostBuilder CreateWebHostBuilder(字符串[]args)=>
WebHost.CreateDefaultBuilder(args)
.ConfigureLogging(loggingBuilder=>
{
loggingBuilder.AddConsoleAdvanced(新的ConsoleLogger设置()
{
IncludeLineBreak=假,
IncludeTimestamp=true,
IncludeZeroEventId=false,
includegnamespace=false
});
})
.UseStartup();
在github上,内置的.NET Core控制台记录器不记录日期时间

您可以尝试自动记录时间戳

1.使用AddConsoleAdvanced方法自定义LoggerBuilderExtensions

public static class LoggerBuilderExtensions
{
    /// <summary>Adds a console logger named 'ConsoleAdvanced' to the factory.</summary>
    /// <param name="builder">The <see cref="T:Microsoft.Extensions.Logging.ILoggingBuilder" /> to use.</param>
    /// <param name="loggingSection"></param>
    public static ILoggingBuilder AddConsoleAdvanced(this ILoggingBuilder builder,
        IConfiguration loggingSection)
    {
        if (loggingSection == null)
            throw new ArgumentNullException(nameof(loggingSection));

        builder.Services.TryAddEnumerable(
            ServiceDescriptor.Singleton<ILoggerProvider,
                AdvancedConsoleLoggerProvider>());

        //We can't read the result of logging.AddConfiguration mtd here, cause it registers internal classes (without public interfaces).
        //So, a configuration section must be passed to configure the logger.
        builder.Services.TryAdd(
            ServiceDescriptor.Singleton<IConsoleLoggerSettings>(
                provider => new ConfigurationConsoleLoggerSettings(loggingSection)));

        return builder;
    }

    /// <summary>Adds a console logger named 'ConsoleAdvanced' to the factory.</summary>
    /// <param name="builder">The <see cref="T:Microsoft.Extensions.Logging.ILoggingBuilder" /> to use.</param>
    public static ILoggingBuilder AddConsoleAdvanced(this ILoggingBuilder builder)
    {
        builder.Services.TryAddEnumerable(
            ServiceDescriptor.Singleton<ILoggerProvider, AdvancedConsoleLoggerProvider>());

        builder.Services.TryAdd(
            ServiceDescriptor.Singleton<IConsoleLoggerSettings>(provider =>ConsoleLoggerSettings.Optimized));

        return builder;
    }

    /// <summary>Adds a console logger named 'ConsoleAdvanced' to the factory.</summary>
    /// <param name="builder">The <see cref="T:Microsoft.Extensions.Logging.ILoggingBuilder" /> to use.</param>
    /// <param name="settings">The formatting settings, timezone, etc.</param>
    public static ILoggingBuilder AddConsoleAdvanced(this ILoggingBuilder builder,
        IConsoleLoggerSettings settings)
    {
        if (settings == null)
            throw new ArgumentNullException(nameof(settings));

        builder.Services.TryAddEnumerable(
            ServiceDescriptor.Singleton<ILoggerProvider, AdvancedConsoleLoggerProvider>());

        builder.Services.TryAddEnumerable(
            ServiceDescriptor.Singleton(provider => settings));

        return builder;
    }
}
公共静态类LoggerBuilderExtensions
{
///将名为“ConsoleAdvanced”的控制台记录器添加到工厂。
///要使用的。
/// 
公共静态ILoggingBuilder AddConsoleAdvanced(此ILoggingBuilder,
I配置记录(第节)
{
如果(loggingSection==null)
抛出新ArgumentNullException(nameof(loggingSection));
builder.Services.TryAddEnumerable(
ServiceDescriptor.Singleton());
//我们无法在此处读取logging.AddConfiguration mtd的结果,因为它注册内部类(没有公共接口)。
//因此,必须传递一个配置部分来配置记录器。
builder.Services.TryAdd(
ServiceDescriptor.Singleton(
provider=>new ConfigurationConsoleLogger设置(loggingSection));
返回生成器;
}
///将名为“ConsoleAdvanced”的控制台记录器添加到工厂。
///要使用的。
公共静态ILoggingBuilder AddConsoleAdvanced(此ILoggingBuilder)
{
builder.Services.TryAddEnumerable(
ServiceDescriptor.Singleton());
builder.Services.TryAdd(
Singleton(provider=>ConsoleLoggerSettings.Optimized));
返回生成器;
}
///将名为“ConsoleAdvanced”的控制台记录器添加到工厂。
///要使用的。
///格式设置、时区等。
公共静态ILoggingBuilder AddConsoleAdvanced(此ILoggingBuilder构建