mirror of
				https://github.com/nsnail/Ocelot.git
				synced 2025-11-04 14:10:50 +08:00 
			
		
		
		
	Improving logging and request id (#189)
* hacking around to work out why logging and request id isnt working * pass request id into logger so it can be structured, removed a bunch of debug logging we dont need because diagnostic trace gets it * changed config dependency * always have tracing available * made it so we dont need to pass config into services.AddOcelot anymore with .net core 2.0 * add test * lots of changes relating to logging and request ids, also updated documentation * fixed failing test i missed
This commit is contained in:
		@@ -1,9 +1,11 @@
 | 
			
		||||
Getting Started
 | 
			
		||||
===============
 | 
			
		||||
 | 
			
		||||
Ocelot is designed to work with ASP.NET core only and is currently 
 | 
			
		||||
Ocelot is designed to work with .NET Core only and is currently 
 | 
			
		||||
built to netcoreapp2.0 `this <https://docs.microsoft.com/en-us/dotnet/articles/standard/library>`_ documentation may prove helpful when working out if Ocelot would be suitable for you.
 | 
			
		||||
 | 
			
		||||
.NET Core 2.0
 | 
			
		||||
^^^^^^^^^^^^^
 | 
			
		||||
 | 
			
		||||
**Install NuGet package**
 | 
			
		||||
 | 
			
		||||
@@ -30,6 +32,86 @@ The following is a very basic configuration.json. It won't do anything but shoul
 | 
			
		||||
Then in your Program.cs you will want to have the following. This can be changed if you 
 | 
			
		||||
don't wan't to use the default url e.g. UseUrls(someUrls) and should work as long as you keep the WebHostBuilder registration.
 | 
			
		||||
 | 
			
		||||
.. code-block:: csharp
 | 
			
		||||
 | 
			
		||||
    public class Program
 | 
			
		||||
    {
 | 
			
		||||
        public static void Main(string[] args)
 | 
			
		||||
        {
 | 
			
		||||
            IWebHostBuilder builder = new WebHostBuilder();
 | 
			
		||||
            builder.ConfigureServices(s => {
 | 
			
		||||
                s.AddSingleton(builder);
 | 
			
		||||
            });
 | 
			
		||||
            builder.UseKestrel()
 | 
			
		||||
                .UseContentRoot(Directory.GetCurrentDirectory())
 | 
			
		||||
                .ConfigureAppConfiguration((hostingContext, config) =>
 | 
			
		||||
                {
 | 
			
		||||
                    config.SetBasePath(hostingContext.HostingEnvironment.ContentRootPath);
 | 
			
		||||
                    var env = hostingContext.HostingEnvironment;
 | 
			
		||||
                    config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
 | 
			
		||||
                        .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
 | 
			
		||||
                    config.AddJsonFile("configuration.json");
 | 
			
		||||
                    config.AddEnvironmentVariables();
 | 
			
		||||
                })
 | 
			
		||||
                .ConfigureLogging((hostingContext, logging) =>
 | 
			
		||||
                {
 | 
			
		||||
                    logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
 | 
			
		||||
                    logging.AddConsole();
 | 
			
		||||
                })
 | 
			
		||||
                .UseIISIntegration()
 | 
			
		||||
                .UseStartup<ManualTestStartup>();                
 | 
			
		||||
            var host = builder.Build();
 | 
			
		||||
            host.Run();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
Sadly we need to inject the IWebHostBuilder interface to get the applications scheme, url and port later. I cannot find a better way of doing this at the moment without setting this in a static or some kind of config.
 | 
			
		||||
 | 
			
		||||
**Startup**
 | 
			
		||||
 | 
			
		||||
An example startup using a json file for configuration can be seen below. This is the most basic startup and Ocelot has quite a few more options. Detailed in the rest of these docs! If you get a stuck a good place to look is at the ManualTests project in the source code.  
 | 
			
		||||
 | 
			
		||||
.. code-block:: csharp
 | 
			
		||||
 | 
			
		||||
    public class Startup
 | 
			
		||||
    {
 | 
			
		||||
        public void ConfigureServices(IServiceCollection services)
 | 
			
		||||
        {
 | 
			
		||||
            services.AddOcelot();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void Configure(IApplicationBuilder app)
 | 
			
		||||
        {
 | 
			
		||||
            app.UseOcelot().Wait();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
.NET Core 1.0
 | 
			
		||||
^^^^^^^^^^^^^
 | 
			
		||||
 | 
			
		||||
**Install NuGet package**
 | 
			
		||||
 | 
			
		||||
Install Ocelot and it's dependecies using nuget. You will need to create a netcoreapp1.0+ projct and bring the package into it. Then follow the Startup below and :doc:`../features/configuration` sections
 | 
			
		||||
to get up and running. Please note you will need to choose one of the Ocelot packages from the NuGet feed.
 | 
			
		||||
 | 
			
		||||
All versions can be found `here <https://www.nuget.org/packages/Ocelot/>`_.
 | 
			
		||||
 | 
			
		||||
**Configuration**
 | 
			
		||||
 | 
			
		||||
The following is a very basic configuration.json. It won't do anything but should get Ocelot starting.
 | 
			
		||||
 | 
			
		||||
.. code-block:: json
 | 
			
		||||
 | 
			
		||||
    {
 | 
			
		||||
        "ReRoutes": [],
 | 
			
		||||
        "GlobalConfiguration": {}
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
**Program**
 | 
			
		||||
 | 
			
		||||
Then in your Program.cs you will want to have the following. This can be changed if you 
 | 
			
		||||
don't wan't to use the default url e.g. UseUrls(someUrls) and should work as long as you keep the WebHostBuilder registration.
 | 
			
		||||
 | 
			
		||||
.. code-block:: csharp
 | 
			
		||||
 | 
			
		||||
    public class Program
 | 
			
		||||
@@ -57,7 +139,6 @@ Sadly we need to inject the IWebHostBuilder interface to get the applications sc
 | 
			
		||||
**Startup**
 | 
			
		||||
 | 
			
		||||
An example startup using a json file for configuration can be seen below. 
 | 
			
		||||
Currently this is the only way to get configuration into Ocelot.
 | 
			
		||||
 | 
			
		||||
.. code-block:: csharp
 | 
			
		||||
 | 
			
		||||
@@ -79,22 +160,13 @@ Currently this is the only way to get configuration into Ocelot.
 | 
			
		||||
 | 
			
		||||
        public void ConfigureServices(IServiceCollection services)
 | 
			
		||||
        {
 | 
			
		||||
            services.AddOcelot(Configuration)
 | 
			
		||||
                    .AddCacheManager(x => {
 | 
			
		||||
                        x.WithMicrosoftLogging(log =>
 | 
			
		||||
                        {
 | 
			
		||||
                            log.AddConsole(LogLevel.Debug);
 | 
			
		||||
                        })
 | 
			
		||||
                        .WithDictionaryHandle();
 | 
			
		||||
                    });;
 | 
			
		||||
            }
 | 
			
		||||
            services.AddOcelot(Configuration);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
 | 
			
		||||
        public void Configure(IApplicationBuilder app)
 | 
			
		||||
        {
 | 
			
		||||
            loggerFactory.AddConsole(Configuration.GetSection("Logging"));
 | 
			
		||||
 | 
			
		||||
            app.UseOcelot().Wait();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
This is pretty much all you need to get going.......more to come! 
 | 
			
		||||
This is pretty much all you need to get going.
 | 
			
		||||
		Reference in New Issue
	
	Block a user