微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在控制台应用程序中存储日志文件

如何解决如何在控制台应用程序中存储日志文件

我正在使用Asp.net core 3.1并尝试保存日志文件。我可以通过添加“ loggerFactory.AddFile(” / Logs / mylog- {Date} .txt“);”在Web应用程序中存储日志文件。到startup.cs文件中,但是我无法将日志文件存储在控制台应用程序中。

class Program
    {
        //public static IConfiguration Configuration { get; }
        private static AppDbContext _context;
        private static IServiceProvider _service;
        public static IConfigurationRoot Configuration;
        public static IOptions<ServiceEndpoint> _endpoint;
        private static ILogger<CallService> _logger;

        static async Task Main(string[] args)
        {
            try
            {
                Console.OutputEncoding = Encoding.UTF8;
                var services = new ServiceCollection();
                var builder = new ConfigurationBuilder()
                    .SetBasePath(Path.Combine(AppContext.BaseDirectory))
                    .AddJsonFile("appsettings.json",optional: true);

                Configuration = builder.Build();

                services.AddDbContext<AppDbContext>(options =>
                    options.UsesqlServer(Configuration.GetConnectionString("DefaultConnection")),ServiceLifetime.Scoped);
                
                services.AddLogging();
                
                using (var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole()))
                {
                    loggerFactory.AddFile("/Logs/mylog-{Date}.txt");
                }

                var serviceProvider = services.BuildServiceProvider();
                }
                _logger.Loginformation("Process runnning");
               }
               catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                _logger.LogError(ex.InnerException.ToString());
            }
              }

解决方法

根据您的代码,我想您正在使用Serilog.Extensions.Logging.File库将日志信息存储到文件中,对吗?我已经检查过its resource document,但是找不到有关如何在控制台应用程序中使用它的文章。因此,作为一种解决方法,我建议您尝试使用Serilog library将日志信息存储到文件中。

要将日志信息存储在控制台应用程序中,可以参考以下步骤:

  1. 通过Nuget安装Serilog.Sinks.ConsoleSerilog.Sinks.Console软件包。

  2. 创建记录器。

         Log.Logger = new LoggerConfiguration()
                  .MinimumLevel.Debug()
                  .WriteTo.File("log.txt")  // log file.
                  .WriteTo.Console(restrictedToMinimumLevel: LogEventLevel.Information)
                  .CreateLogger();
    

    下面的示例代码(添加SerilogSerilog.Events名称空间):

         static void Main(string[] args)
         {
             Log.Logger = new LoggerConfiguration()
                      .MinimumLevel.Debug()
                      .WriteTo.File("log.txt")
                      .WriteTo.Console(restrictedToMinimumLevel: LogEventLevel.Information)
                      .CreateLogger(); 
             try
             {
                 Log.Information("Starting up"); 
             }
             catch (Exception ex)
             {
                 Log.Fatal(ex,"Application start-up failed");
             }
             finally
             {
                 Log.CloseAndFlush();
             }
             Console.WriteLine("Hello World!");
             Console.ReadKey();
         }
    

    有关使用Serilog的更多详细信息,请检查Serilog Configuration Basics

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。