From c265793b09c902e439bcae9bbb5a700ba4870423 Mon Sep 17 00:00:00 2001 From: Sue Garner Date: Fri, 21 Jan 2022 10:11:02 +0000 Subject: [PATCH 1/9] MAS-258 Upgraded to 3.1 WIP No logging --- lambda/MAS.Tests/MAS.Tests.csproj | 2 +- lambda/MAS/MAS.csproj | 3 +-- lambda/MAS/SeriLogger.cs | 4 ++-- lambda/MAS/Startup.cs | 23 ++++++++++++++++------- lambda/MAS/web.config | 4 ++-- 5 files changed, 22 insertions(+), 14 deletions(-) diff --git a/lambda/MAS.Tests/MAS.Tests.csproj b/lambda/MAS.Tests/MAS.Tests.csproj index 4399f9bc..d0efa7ce 100644 --- a/lambda/MAS.Tests/MAS.Tests.csproj +++ b/lambda/MAS.Tests/MAS.Tests.csproj @@ -1,6 +1,6 @@  - netcoreapp2.1 + netcoreapp3.1 False adafe3d8-65fb-49fd-885e-03341a36dc88 diff --git a/lambda/MAS/MAS.csproj b/lambda/MAS/MAS.csproj index 089a7c1b..86b00eb6 100644 --- a/lambda/MAS/MAS.csproj +++ b/lambda/MAS/MAS.csproj @@ -1,6 +1,6 @@  - netcoreapp2.1 + netcoreapp3.1 true Lambda adafe3d8-65fb-49fd-885e-03341a36dc88 @@ -15,7 +15,6 @@ - diff --git a/lambda/MAS/SeriLogger.cs b/lambda/MAS/SeriLogger.cs index 0af18667..555d6d78 100644 --- a/lambda/MAS/SeriLogger.cs +++ b/lambda/MAS/SeriLogger.cs @@ -22,8 +22,8 @@ public void Configure(ILoggerFactory loggerFactory, IConfiguration configuration // read appsettings var logCfg = configuration.GetSection("Logging"); - loggerFactory.AddConsole(logCfg); // add provider to send logs to System.Console.WriteLine() - loggerFactory.AddDebug(); // add provider to send logs to System.Diagnostics.Debug.WriteLine() + //loggerFactory.AddConsole(logCfg); // add provider to send logs to System.Console.WriteLine() + //loggerFactory.AddDebug(); // add provider to send logs to System.Diagnostics.Debug.WriteLine() var rabbitSettingsFound = int.TryParse(logCfg["RabbitMQPort"], out var rPort); bool.TryParse(logCfg["UseRabbit"], out var useRabbit); diff --git a/lambda/MAS/Startup.cs b/lambda/MAS/Startup.cs index 0eeec6f5..57a40729 100644 --- a/lambda/MAS/Startup.cs +++ b/lambda/MAS/Startup.cs @@ -11,7 +11,9 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; +using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; +using IHostingEnvironment = Microsoft.AspNetCore.Hosting.IHostingEnvironment; namespace MAS { @@ -91,24 +93,25 @@ public void ConfigureServices(IServiceCollection services) return new AmazonCloudFrontClient(awsConfig.AccessKey, awsConfig.SecretKey, cloudfrontConfig); }); + services.AddControllers(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline public void Configure(IApplicationBuilder app, - IHostingEnvironment env, + IWebHostEnvironment env, ILoggerFactory loggerFactory, - ISeriLogger seriLogger, - IApplicationLifetime appLifetime, + //ISeriLogger seriLogger, + IHostApplicationLifetime appLifetime, EnvironmentConfig environmentConfig) { - seriLogger.Configure(loggerFactory, Configuration, appLifetime, env, environmentConfig); + //seriLogger.Configure(loggerFactory, Configuration, appLifetime, env, environmentConfig); loggerFactory.CreateLogger(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); - loggerFactory.AddConsole(Configuration.GetSection("Logging")); - loggerFactory.AddDebug(); + //loggerFactory.AddConsole(Configuration.GetSection("Logging")); + //loggerFactory.AddDebug(); } else { @@ -116,7 +119,13 @@ public void Configure(IApplicationBuilder app, } app.UseHttpsRedirection(); - app.UseMvc(); + + app.UseRouting(); + app.UseEndpoints(endpoints => { + endpoints.MapControllers(); + }); + + } } } diff --git a/lambda/MAS/web.config b/lambda/MAS/web.config index bcc15ecc..0fd8dd77 100644 --- a/lambda/MAS/web.config +++ b/lambda/MAS/web.config @@ -2,9 +2,9 @@ - + - + From c90f9ed5923e97cc9c8d6afe1bafb96b2ce8a2ef Mon Sep 17 00:00:00 2001 From: imranazad Date: Fri, 21 Jan 2022 11:24:26 +0000 Subject: [PATCH 2/9] MAS-258 Add runtime identifiers --- lambda/MAS/MAS.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/lambda/MAS/MAS.csproj b/lambda/MAS/MAS.csproj index 86b00eb6..763904bd 100644 --- a/lambda/MAS/MAS.csproj +++ b/lambda/MAS/MAS.csproj @@ -2,6 +2,7 @@ netcoreapp3.1 true + linux-x64;win7-x64 Lambda adafe3d8-65fb-49fd-885e-03341a36dc88 From 2a84b76f352bdaf5db35693fb35a984c40767468 Mon Sep 17 00:00:00 2001 From: imranazad Date: Fri, 21 Jan 2022 12:13:38 +0000 Subject: [PATCH 3/9] MAS-258 Add NICE.Logging 6.0.22 manually --- lambda/MAS/MAS.csproj | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/lambda/MAS/MAS.csproj b/lambda/MAS/MAS.csproj index 763904bd..2daca1a8 100644 --- a/lambda/MAS/MAS.csproj +++ b/lambda/MAS/MAS.csproj @@ -21,7 +21,6 @@ - @@ -32,4 +31,24 @@ + + + nice.logging\6.0.22\lib\netstandard1.6\NICE.Logging.dll + + + nice.logging.quickfix\rabbitmq.client\4.1.1\lib\netstandard1.5\RabbitMQ.Client.dll + + + nice.logging.quickfix\serilog\2.5.0\lib\netstandard1.3\Serilog.dll + + + nice.logging.quickfix\serilog.extensions.logging\1.2.0\lib\netstandard1.3\Serilog.Extensions.Logging.dll + + + nice.logging.quickfix\serilog.sinks.periodicbatching\2.1.0\lib\netstandard1.2\Serilog.Sinks.PeriodicBatching.dll + + + nice.logging.quickfix\serilog.sinks.rollingfile\3.2.0\lib\netstandard1.3\Serilog.Sinks.RollingFile.dll + + \ No newline at end of file From 582ca1b89a6e775a4e015ce82d958d5bbf6527ed Mon Sep 17 00:00:00 2001 From: imranazad Date: Fri, 21 Jan 2022 12:21:54 +0000 Subject: [PATCH 4/9] MAS-258 Set copy local to yes --- lambda/MAS/MAS.csproj | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lambda/MAS/MAS.csproj b/lambda/MAS/MAS.csproj index 2daca1a8..2b3a08d0 100644 --- a/lambda/MAS/MAS.csproj +++ b/lambda/MAS/MAS.csproj @@ -34,21 +34,27 @@ nice.logging\6.0.22\lib\netstandard1.6\NICE.Logging.dll + true nice.logging.quickfix\rabbitmq.client\4.1.1\lib\netstandard1.5\RabbitMQ.Client.dll + true nice.logging.quickfix\serilog\2.5.0\lib\netstandard1.3\Serilog.dll + true nice.logging.quickfix\serilog.extensions.logging\1.2.0\lib\netstandard1.3\Serilog.Extensions.Logging.dll + true nice.logging.quickfix\serilog.sinks.periodicbatching\2.1.0\lib\netstandard1.2\Serilog.Sinks.PeriodicBatching.dll + true nice.logging.quickfix\serilog.sinks.rollingfile\3.2.0\lib\netstandard1.3\Serilog.Sinks.RollingFile.dll + true \ No newline at end of file From b687827f9c1fceea099fa9d7d1c1d2c65e42471e Mon Sep 17 00:00:00 2001 From: imranazad Date: Fri, 21 Jan 2022 12:23:31 +0000 Subject: [PATCH 5/9] MAS-258 Add NICE.Logging library manually --- .../nice.logging/6.0.22/.nupkg.metadata | 5 + .../lib/netstandard1.6/NICE.Logging.dll | Bin 0 -> 12800 bytes .../6.0.22/nice.logging.6.0.22.nupkg.sha512 | 1 + .../nice.logging/6.0.22/nice.logging.nuspec | 21 + .../rabbitmq.client/4.1.1/.nupkg.metadata | 5 + .../rabbitmq.client/4.1.1/.signature.p7s | Bin 0 -> 9484 bytes .../4.1.1/lib/net451/RabbitMQ.Client.dll | Bin 0 -> 248320 bytes .../4.1.1/lib/net451/RabbitMQ.Client.xml | 6632 +++++++++++++++++ .../lib/netstandard1.5/RabbitMQ.Client.dll | Bin 0 -> 248832 bytes .../lib/netstandard1.5/RabbitMQ.Client.xml | 6632 +++++++++++++++++ .../4.1.1/rabbitmq.client.4.1.1.nupkg.sha512 | 1 + .../4.1.1/rabbitmq.client.nuspec | 38 + .../1.2.0/.nupkg.metadata | 5 + .../1.2.0/.signature.p7s | Bin 0 -> 9464 bytes .../lib/net45/Serilog.Extensions.Logging.dll | Bin 0 -> 9728 bytes .../lib/net45/Serilog.Extensions.Logging.xml | 48 + .../Serilog.Extensions.Logging.dll | Bin 0 -> 9728 bytes .../Serilog.Extensions.Logging.xml | 48 + ...ilog.extensions.logging.1.2.0.nupkg.sha512 | 1 + .../1.2.0/serilog.extensions.logging.nuspec | 27 + .../2.1.0/.nupkg.metadata | 5 + .../2.1.0/.signature.p7s | Bin 0 -> 9463 bytes .../net45/Serilog.Sinks.PeriodicBatching.dll | Bin 0 -> 12288 bytes .../net45/Serilog.Sinks.PeriodicBatching.xml | 109 + .../Serilog.Sinks.PeriodicBatching.dll | Bin 0 -> 12288 bytes .../Serilog.Sinks.PeriodicBatching.xml | 109 + .../Serilog.Sinks.PeriodicBatching.dll | Bin 0 -> 12288 bytes .../Serilog.Sinks.PeriodicBatching.xml | 109 + ....sinks.periodicbatching.2.1.0.nupkg.sha512 | 1 + .../serilog.sinks.periodicbatching.nuspec | 29 + .../3.2.0/.nupkg.metadata | 5 + .../3.2.0/.signature.p7s | Bin 0 -> 9464 bytes .../lib/net45/Serilog.Sinks.RollingFile.dll | Bin 0 -> 18432 bytes .../lib/net45/Serilog.Sinks.RollingFile.xml | 110 + .../Serilog.Sinks.RollingFile.dll | Bin 0 -> 18432 bytes .../Serilog.Sinks.RollingFile.xml | 110 + ...rilog.sinks.rollingfile.3.2.0.nupkg.sha512 | 1 + .../3.2.0/serilog.sinks.rollingfile.nuspec | 27 + .../serilog/2.5.0/.nupkg.metadata | 5 + .../serilog/2.5.0/.signature.p7s | Bin 0 -> 9464 bytes .../serilog/2.5.0/lib/net45/Serilog.dll | Bin 0 -> 111616 bytes .../serilog/2.5.0/lib/net45/Serilog.xml | 4499 +++++++++++ .../serilog/2.5.0/lib/net46/Serilog.dll | Bin 0 -> 111104 bytes .../serilog/2.5.0/lib/net46/Serilog.xml | 4499 +++++++++++ .../2.5.0/lib/netstandard1.0/Serilog.dll | Bin 0 -> 110592 bytes .../2.5.0/lib/netstandard1.0/Serilog.xml | 4499 +++++++++++ .../2.5.0/lib/netstandard1.3/Serilog.dll | Bin 0 -> 110592 bytes .../2.5.0/lib/netstandard1.3/Serilog.xml | 4499 +++++++++++ .../serilog/2.5.0/serilog.2.5.0.nupkg.sha512 | 1 + .../serilog/2.5.0/serilog.nuspec | 46 + 50 files changed, 32127 insertions(+) create mode 100644 lambda/MAS/nice.logging.quickfix/nice.logging/6.0.22/.nupkg.metadata create mode 100644 lambda/MAS/nice.logging.quickfix/nice.logging/6.0.22/lib/netstandard1.6/NICE.Logging.dll create mode 100644 lambda/MAS/nice.logging.quickfix/nice.logging/6.0.22/nice.logging.6.0.22.nupkg.sha512 create mode 100644 lambda/MAS/nice.logging.quickfix/nice.logging/6.0.22/nice.logging.nuspec create mode 100644 lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/.nupkg.metadata create mode 100644 lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/.signature.p7s create mode 100644 lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/lib/net451/RabbitMQ.Client.dll create mode 100644 lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/lib/net451/RabbitMQ.Client.xml create mode 100644 lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/lib/netstandard1.5/RabbitMQ.Client.dll create mode 100644 lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/lib/netstandard1.5/RabbitMQ.Client.xml create mode 100644 lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/rabbitmq.client.4.1.1.nupkg.sha512 create mode 100644 lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/rabbitmq.client.nuspec create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/.nupkg.metadata create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/.signature.p7s create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/lib/net45/Serilog.Extensions.Logging.dll create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/lib/net45/Serilog.Extensions.Logging.xml create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/lib/netstandard1.3/Serilog.Extensions.Logging.dll create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/lib/netstandard1.3/Serilog.Extensions.Logging.xml create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/serilog.extensions.logging.1.2.0.nupkg.sha512 create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/serilog.extensions.logging.nuspec create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/.nupkg.metadata create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/.signature.p7s create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/lib/net45/Serilog.Sinks.PeriodicBatching.dll create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/lib/net45/Serilog.Sinks.PeriodicBatching.xml create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/lib/netstandard1.1/Serilog.Sinks.PeriodicBatching.dll create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/lib/netstandard1.1/Serilog.Sinks.PeriodicBatching.xml create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/lib/netstandard1.2/Serilog.Sinks.PeriodicBatching.dll create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/lib/netstandard1.2/Serilog.Sinks.PeriodicBatching.xml create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/serilog.sinks.periodicbatching.2.1.0.nupkg.sha512 create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/serilog.sinks.periodicbatching.nuspec create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/.nupkg.metadata create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/.signature.p7s create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/lib/net45/Serilog.Sinks.RollingFile.dll create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/lib/net45/Serilog.Sinks.RollingFile.xml create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/lib/netstandard1.3/Serilog.Sinks.RollingFile.dll create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/lib/netstandard1.3/Serilog.Sinks.RollingFile.xml create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/serilog.sinks.rollingfile.3.2.0.nupkg.sha512 create mode 100644 lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/serilog.sinks.rollingfile.nuspec create mode 100644 lambda/MAS/nice.logging.quickfix/serilog/2.5.0/.nupkg.metadata create mode 100644 lambda/MAS/nice.logging.quickfix/serilog/2.5.0/.signature.p7s create mode 100644 lambda/MAS/nice.logging.quickfix/serilog/2.5.0/lib/net45/Serilog.dll create mode 100644 lambda/MAS/nice.logging.quickfix/serilog/2.5.0/lib/net45/Serilog.xml create mode 100644 lambda/MAS/nice.logging.quickfix/serilog/2.5.0/lib/net46/Serilog.dll create mode 100644 lambda/MAS/nice.logging.quickfix/serilog/2.5.0/lib/net46/Serilog.xml create mode 100644 lambda/MAS/nice.logging.quickfix/serilog/2.5.0/lib/netstandard1.0/Serilog.dll create mode 100644 lambda/MAS/nice.logging.quickfix/serilog/2.5.0/lib/netstandard1.0/Serilog.xml create mode 100644 lambda/MAS/nice.logging.quickfix/serilog/2.5.0/lib/netstandard1.3/Serilog.dll create mode 100644 lambda/MAS/nice.logging.quickfix/serilog/2.5.0/lib/netstandard1.3/Serilog.xml create mode 100644 lambda/MAS/nice.logging.quickfix/serilog/2.5.0/serilog.2.5.0.nupkg.sha512 create mode 100644 lambda/MAS/nice.logging.quickfix/serilog/2.5.0/serilog.nuspec diff --git a/lambda/MAS/nice.logging.quickfix/nice.logging/6.0.22/.nupkg.metadata b/lambda/MAS/nice.logging.quickfix/nice.logging/6.0.22/.nupkg.metadata new file mode 100644 index 00000000..0550baa9 --- /dev/null +++ b/lambda/MAS/nice.logging.quickfix/nice.logging/6.0.22/.nupkg.metadata @@ -0,0 +1,5 @@ +{ + "version": 2, + "contentHash": "IIsw1u7GXvZ5kVPILD8JhLlXvjUuqbjKu1xM4NEW6lvQlBjQYrbe97Ar5eyyosMyWlBse7a9u4bQCUj6qMQhZQ==", + "source": "https://teamcity.nice.org.uk/httpAuth/app/nuget/feed/_Root/default/v2" +} \ No newline at end of file diff --git a/lambda/MAS/nice.logging.quickfix/nice.logging/6.0.22/lib/netstandard1.6/NICE.Logging.dll b/lambda/MAS/nice.logging.quickfix/nice.logging/6.0.22/lib/netstandard1.6/NICE.Logging.dll new file mode 100644 index 0000000000000000000000000000000000000000..6c7b9114e23658031c3f540898005f6e6bbcde3f GIT binary patch literal 12800 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 + + + NICE.Logging + 6.0.22 + NICE.Logging + NICE.Logging + false + Package Description + + + + + + + + + + + + \ No newline at end of file diff --git a/lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/.nupkg.metadata b/lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/.nupkg.metadata new file mode 100644 index 00000000..4d77eb3f --- /dev/null +++ b/lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/.nupkg.metadata @@ -0,0 +1,5 @@ +{ + "version": 2, + "contentHash": "KrIEo53c7/WGez9cdA38VOg7dbvBY0RacVqE8eoz/WXtBtpfeNO7tolND+H5J3JbVrFujhkQf4I5cq5ACeBpTg==", + "source": "https://api.nuget.org/v3/index.json" +} \ No newline at end of file diff --git a/lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/.signature.p7s b/lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..1d2e17aef20d3d321feb1c07bce614da79d0b417 GIT binary patch literal 9484 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 X=7mVn4!*+pn^Ekc{MNU8$D95K{vS|k literal 0 HcmV?d00001 diff --git a/lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/lib/net451/RabbitMQ.Client.dll b/lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/lib/net451/RabbitMQ.Client.dll new file mode 100644 index 0000000000000000000000000000000000000000..29651340325b469e4cc579f82299b3947134d2f0 GIT binary patch literal 248320 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 x*Y%hMzc;@he4sy&z`_`iu3tJVMj literal 0 HcmV?d00001 diff --git a/lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/lib/net451/RabbitMQ.Client.xml b/lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/lib/net451/RabbitMQ.Client.xml new file mode 100644 index 00000000..a0895dd9 --- /dev/null +++ b/lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/lib/net451/RabbitMQ.Client.xml @@ -0,0 +1,6632 @@ + + + + RabbitMQ.Client + + + +

+ Represents a TCP-addressable AMQP peer: a host name and port number. + + + Some of the constructors take, as a convenience, a System.Uri + instance representing an AMQP server address. The use of Uri + here is not standardised - Uri is simply a convenient + container for internet-address-like components. In particular, + the Uri "Scheme" property is ignored: only the "Host" and + "Port" properties are extracted. + + + + + Default Amqp ssl port. + + + + + Indicates that the default port for the protocol should be used. + + + + + Creates a new instance of the . + + Hostname. + Port number. If the port number is -1, the default port number will be used. + Ssl option. + + + + Creates a new instance of the . + + Hostname. + Port number. If the port number is -1, the default port number will be used. + + + + Construct an AmqpTcpEndpoint with "localhost" as the hostname, and using the default port. + + + + + Creates a new instance of the with the given Uri and ssl options. + + + Please see the class overview documentation for information about the Uri format in use. + + + + + Creates a new instance of the with the given Uri. + + + Please see the class overview documentation for information about the Uri format in use. + + + + + Clones the endpoint. + + A copy with the same hostname, port, and TLS settings + + + + Clones the endpoint using the provided hostname. + + Hostname to use + A copy with the provided hostname and port/TLS settings of this endpoint + + + + Retrieve or set the hostname of this . + + + + Retrieve or set the port number of this + AmqpTcpEndpoint. A port number of -1 causes the default + port number. + + + + Retrieve IProtocol of this . + + + + + Retrieve the SSL options for this AmqpTcpEndpoint. If not set, null is returned. + + + + + Construct an instance from a protocol and an address in "hostname:port" format. + + + If the address string passed in contains ":", it is split + into a hostname and a port-number part. Otherwise, the + entire string is used as the hostname, and the port-number + is set to -1 (meaning the default number for the protocol + variant specified). + Hostnames provided as IPv6 must appear in square brackets ([]). + + + + + Splits the passed-in string on ",", and passes the substrings to . + + + Accepts a string of the form "hostname:port, + hostname:port, ...", where the ":port" pieces are + optional, and returns a corresponding array of s. + + + + + Compares this instance by value (protocol, hostname, port) against another instance. + + + + + Implementation of hash code depending on protocol, hostname and port, + to line up with the implementation of . + + + + + Returns a URI-like string of the form amqp-PROTOCOL://HOSTNAME:PORTNUMBER. + + + This method is intended mainly for debugging and logging use. + + + + + Structure holding an AMQP timestamp, a posix 64-bit time_t. + + + When converting between an AmqpTimestamp and a System.DateTime, + be aware of the effect of your local timezone. In particular, + different versions of the .NET framework assume different + defaults. + + + We have chosen a signed 64-bit time_t here, since the AMQP + specification through versions 0-9 is silent on whether + timestamps are signed or unsigned. + + + + + + Construct an . + + Unix time. + + + + Unix time. + + + + + Provides a debugger-friendly display. + + + + Represents a version of the AMQP specification. + + + Vendor-specific variants of particular official specification + versions exist: this class simply represents the AMQP + specification version, and does not try to represent + information about any custom variations involved. + + + AMQP version 0-8 peers sometimes advertise themselves as + version 8-0: for this reason, this class's constructor + special-cases 8-0, rewriting it at construction time to be 0-8 instead. + + + + + + Construct an from major and minor version numbers. + + + Converts major=8 and minor=0 into major=0 and minor=8. Please see the class comment. + + + + + The AMQP specification major version number. + + + + + The AMQP specification minor version number. + + + + + Implement value-equality comparison. + + + + + Implement hashing as for value-equality. + + + + + Format appropriately for display. + + + The specification currently uses "MAJOR-MINOR" as a display format. + + + + + A pluggable authentication mechanism. + + + + + Handle one round of challenge-response. + + + + + The name of the authentication mechanism, as negotiated on the wire. + + + + + Return a new authentication mechanism implementation. + + + + Represents Basic.GetOk responses from the server. + + Basic.Get either returns an instance of this class, or null if a Basic.GetEmpty was received. + + + + + Sets the new instance's properties from the arguments passed in. + + Delivery tag for the message. + Redelivered flag for the message + The exchange this message was published to. + Routing key with which the message was published. + The number of messages pending on the queue, excluding the message being delivered. + The Basic-class content header properties for the message. + + + + + Retrieves the Basic-class content header properties for this message. + + + + + Retrieves the body of this message. + + + + + Retrieve the delivery tag for this message. See also . + + + + + Retrieve the exchange this message was published to. + + + + + Retrieve the number of messages pending on the queue, excluding the message being delivered. + + + Note that this figure is indicative, not reliable, and can + change arbitrarily as messages are added to the queue and removed by other clients. + + + + + Retrieve the redelivered flag for this message. + + + + + Retrieve the routing key with which this message was published. + + + + Wrapper for a byte[]. May appear as values read from + and written to AMQP field tables. + + + The sole reason for the existence of this class is to permit + encoding of byte[] as 'x' in AMQP field tables, an extension + to the specification that is part of the tentative JMS mapping + implemented by QPid. + + + Instances of this object may be found as values held in + IDictionary instances returned from + RabbitMQ.Client.Impl.WireFormatting.ReadTable, e.g. as part of + IBasicProperties.Headers tables. Likewise, instances may be + set as values in an IDictionary table to be encoded by + RabbitMQ.Client.Impl.WireFormatting.WriteTable. + + + When an instance of this class is encoded/decoded, the type + tag 'x' is used in the on-the-wire representation. The AMQP + standard type tag 'S' is decoded to a raw byte[], and a raw + byte[] is encoded as 'S'. Instances of System.String are + converted to a UTF-8 binary representation, and then encoded + using tag 'S'. In order to force the use of tag 'x', instances + of this class must be used. + + + + + + Creates a new instance of the with null for its Bytes property. + + + + + Creates a new instance of the . + + The wrapped byte array, as decoded or as to be encoded. + + + + The wrapped byte array, as decoded or as to be encoded. + + + + Main entry point to the RabbitMQ .NET AMQP client + API. Constructs instances. + + + A simple example of connecting to a broker: + + + IConnectionFactory factory = new ConnectionFactory(); + // + // The next six lines are optional: + factory.UserName = ConnectionFactory.DefaultUser; + factory.Password = ConnectionFactory.DefaultPass; + factory.VirtualHost = ConnectionFactory.DefaultVHost; + factory.HostName = hostName; + factory.Port = AmqpTcpEndpoint.UseDefaultPort; + // + IConnection conn = factory.CreateConnection(); + // + IModel ch = conn.CreateModel(); + // + // ... use ch's IModel methods ... + // + ch.Close(Constants.ReplySuccess, "Closing the channel"); + conn.Close(Constants.ReplySuccess, "Closing the connection"); + + + The same example, written more compactly with AMQP URIs: + + + ConnectionFactory factory = new ConnectionFactory(); + factory.Uri = "amqp://localhost"; + IConnection conn = factory.CreateConnection(); + ... + + + Please see also the API overview and tutorial in the User Guide. + + + Note that the Uri property takes a string representation of an + AMQP URI. Omitted URI parts will take default values. The + host part of the URI cannot be omitted and URIs of the form + "amqp://foo/" (note the trailling slash) also represent the + default virtual host. The latter issue means that virtual + hosts with an empty name are not addressable. + + + + Default value for the desired maximum channel number, with zero meaning unlimited (value: 0). + + PLEASE KEEP THIS MATCHING THE DOC ABOVE. + + + + Default value for connection attempt timeout, in milliseconds. + + + + + Default value for the desired maximum frame size, with zero meaning unlimited (value: 0). + + PLEASE KEEP THIS MATCHING THE DOC ABOVE. + + + + Default value for desired heartbeat interval, in seconds, with zero meaning none (value: 60). + + PLEASE KEEP THIS MATCHING THE DOC ABOVE. + + + + Default password (value: "guest"). + + PLEASE KEEP THIS MATCHING THE DOC ABOVE. + + + + Default user name (value: "guest"). + + PLEASE KEEP THIS MATCHING THE DOC ABOVE. + + + + Default virtual host (value: "/"). + + PLEASE KEEP THIS MATCHING THE DOC ABOVE. + + + + Default SASL auth mechanisms to use. + + + + + SASL auth mechanisms to use. + + + + + Set to true to enable automatic connection recovery. + + + + The host to connect to. + + + + Amount of time client will wait for before re-trying to recover connection. + + + + + Amount of time protocol handshake operations are allowed to take before + timing out. + + + + + Amount of time protocol operations (e.g. queue.declare) are allowed to take before + timing out. + + + + + Factory function for creating the + used to generate a list of endpoints for the ConnectionFactory + to try in order. + The default value creates an instance of the + using the list of endpoints passed in. The DefaultEndpointResolver shuffles the + provided list each time it is requested. + + + + + The port to connect on. + indicates the default for the protocol should be used. + + + + + Protocol used, only AMQP 0-9-1 is supported in modern versions. + + + + + Timeout setting for connection attempts (in milliseconds). + + + + + Timeout setting for socket read operations (in milliseconds). + + + + + Timeout setting for socket write operations (in milliseconds). + + + + + Ssl options setting. + + + + + Set to true to make automatic connection recovery also recover topology (exchanges, queues, bindings, etc). + + + + + Task scheduler connections created by this factory will use when + dispatching consumer operations, such as message deliveries. + + + + + Construct a fresh instance, with all fields set to their respective defaults. + + + + + Connection endpoint. + + + + + Set connection parameters using the amqp or amqps scheme. + + + + + Set connection parameters using the amqp or amqps scheme. + + + + + Dictionary of client properties to be sent to the server. + + + + + Password to use when authenticating to the server. + + + + + Maximum channel number to ask for. + + + + + Frame-max parameter to ask for (in bytes). + + + + + Heartbeat timeout to use when negotiating with the server (in seconds). + + + + + When set to true, background thread will be used for the I/O loop. + + + + + Username to use when authenticating to the server. + + + + + Virtual host to access during this connection. + + + + + Given a list of mechanism names supported by the server, select a preferred mechanism, + or null if we have none in common. + + + + + Create a connection to one of the endpoints provided by the IEndpointResolver + returned by the EndpointResolverFactory. By default the configured + hostname and port are used. + + + When the configured hostname was not reachable. + + + + + Create a connection to one of the endpoints provided by the IEndpointResolver + returned by the EndpointResolverFactory. By default the configured + hostname and port are used. + + + Application-specific connection name, will be displayed in the management UI + if RabbitMQ server supports it. This value doesn't have to be unique and cannot + be used as a connection identifier, e.g. in HTTP API requests. + This value is supposed to be human-readable. + + + When the configured hostname was not reachable. + + + + + Create a connection using a list of hostnames using the configured port. + By default each hostname is tried in a random order until a successful connection is + found or the list is exhausted using the DefaultEndpointResolver. + The selection behaviour can be overriden by configuring the EndpointResolverFactory. + + + List of hostnames to use for the initial + connection and recovery. + + Open connection + + When no hostname was reachable. + + + + + Create a connection using a list of hostnames using the configured port. + By default each endpoint is tried in a random order until a successful connection is + found or the list is exhausted. + The selection behaviour can be overriden by configuring the EndpointResolverFactory. + + + List of hostnames to use for the initial + connection and recovery. + + + Application-specific connection name, will be displayed in the management UI + if RabbitMQ server supports it. This value doesn't have to be unique and cannot + be used as a connection identifier, e.g. in HTTP API requests. + This value is supposed to be human-readable. + + Open connection + + When no hostname was reachable. + + + + + Create a connection using a list of endpoints. By default each endpoint will be tried + in a random order until a successful connection is found or the list is exhausted. + The selection behaviour can be overriden by configuring the EndpointResolverFactory. + + + List of endpoints to use for the initial + connection and recovery. + + Open connection + + When no hostname was reachable. + + + + + Create a connection using an IEndpointResolver. + + + The endpointResolver that returns the endpoints to use for the connection attempt. + + + Application-specific connection name, will be displayed in the management UI + if RabbitMQ server supports it. This value doesn't have to be unique and cannot + be used as a connection identifier, e.g. in HTTP API requests. + This value is supposed to be human-readable. + + Open connection + + When no hostname was reachable. + + + + + Unescape a string, protecting '+'. + + + + + Set custom socket options by providing a SocketFactory. + + + + + Creates a new instance of the . + + Specifies the addressing scheme. + New instance of a . + + + + Useful default/base implementation of . + Subclass and override in application code. + + + Note that the "Handle*" methods run in the connection's thread! + Consider using , which exposes + events that can be subscribed to consumer messages. + + + + + Creates a new instance of an . + + + + + Constructor which sets the Model property to the given value. + + Common AMQP model. + + + + Retrieve the consumer tag this consumer is registered as; to be used when discussing this consumer + with the server, for instance with . + + + + + Returns true while the consumer is registered and expecting deliveries from the broker. + + + + + If our shuts down, this property will contain a description of the reason for the + shutdown. Otherwise it will contain null. See . + + + + + Signalled when the consumer gets cancelled. + + + + + Retrieve the this consumer is associated with, + for use in acknowledging received messages, for instance. + + + + + Called when the consumer is cancelled for reasons other than by a basicCancel: + e.g. the queue has been deleted (either by this channel or by any other channel). + See for notification of consumer cancellation due to basicCancel + + Consumer tag this consumer is registered. + + + + Called upon successful deregistration of the consumer from the broker. + + Consumer tag this consumer is registered. + + + + Called upon successful registration of the consumer with the broker. + + Consumer tag this consumer is registered. + + + + Called each time a message arrives for this consumer. + + + Does nothing with the passed in information. + Note that in particular, some delivered messages may require acknowledgement via . + The implementation of this method in this class does NOT acknowledge such messages. + + + + + Called when the model shuts down. + + Common AMQP model. + Information about the reason why a particular model, session, or connection was destroyed. + + + + Default implementation - overridable in subclasses. + + This default implementation simply sets the + property to false, and takes no further action. + + + + + Convenience class providing compile-time names for standard exchange types. + + + Use the static members of this class as values for the + "exchangeType" arguments for IModel methods such as + ExchangeDeclare. The broker may be extended with additional + exchange types that do not appear in this class. + + + + + Exchange type used for AMQP direct exchanges. + + + + + Exchange type used for AMQP fanout exchanges. + + + + + Exchange type used for AMQP headers exchanges. + + + + + Exchange type used for AMQP topic exchanges. + + + + + Retrieve a collection containing all standard exchange types. + + + + + Handle one round of challenge-response. + + + + + The name of the authentication mechanism, as negotiated on the wire. + + + + + Return a new authentication mechanism implementation. + + + + + Convenience class providing compile-time names for standard headers. + + + Use the static members of this class as headers for the + arguments for Queue and Exchange declaration or Consumer creation. + The broker may be extended with additional + headers that do not appear in this class. + + + + + x-max-priority header + + + + + x-max-length header + + + + + x-max-length-bytes header + + + + + x-dead-letter-exchange header + + + + + x-dead-letter-routing-key header + + + + + x-message-ttl header + + + + + x-expires header + + + + + alternate-exchange header + + + + + x-priority header + + + + Consumer interface. Used to + receive messages from a queue by subscription. + + + See IModel.BasicConsume, IModel.BasicCancel. + + + Note that the "Handle*" methods run in the connection's + thread! Consider using QueueingBasicConsumer, which uses a + SharedQueue instance to safely pass received messages across + to user threads. + + + + + + Retrieve the this consumer is associated with, + for use in acknowledging received messages, for instance. + + + + + Signalled when the consumer gets cancelled. + + + + + Called when the consumer is cancelled for reasons other than by a basicCancel: + e.g. the queue has been deleted (either by this channel or by any other channel). + See for notification of consumer cancellation due to basicCancel + + Consumer tag this consumer is registered. + + + + Called upon successful deregistration of the consumer from the broker. + + Consumer tag this consumer is registered. + + + + Called upon successful registration of the consumer with the broker. + + Consumer tag this consumer is registered. + + + + Called each time a message arrives for this consumer. + + + Does nothing with the passed in information. + Note that in particular, some delivered messages may require acknowledgement via . + The implementation of this method in this class does NOT acknowledge such messages. + + + + + Called when the model shuts down. + + Common AMQP model. + Information about the reason why a particular model, session, or connection was destroyed. + + + Common AMQP Basic content-class headers interface, + spanning the union of the functionality offered by versions + 0-8, 0-8qpid, 0-9 and 0-9-1 of AMQP. + + + The specification code generator provides + protocol-version-specific implementations of this interface. To + obtain an implementation of this interface in a + protocol-version-neutral way, use . + + + Each property is readable, writable and clearable: a cleared + property will not be transmitted over the wire. Properties on a + fresh instance are clear by default. + + + + + + Application Id. + + + + + Intra-cluster routing identifier (cluster id is deprecated in AMQP 0-9-1). + + + + + MIME content encoding. + + + + + MIME content type. + + + + + Application correlation identifier. + + + + + Non-persistent (1) or persistent (2). + + + + + Message expiration specification. + + + + + Message header field table. Is of type . + + + + + Application message Id. + + + + + Sets to either persistent (2) or non-persistent (1). + + + + + Message priority, 0 to 9. + + + + + Destination to reply to. + + + + + Convenience property; parses property using , + and serializes it using . + Returns null if property cannot be parsed by . + + + + + Message timestamp. + + + + + Message type name. + + + + + User Id. + + + + + Clear the property. + + + + + Clear the property (cluster id is deprecated in AMQP 0-9-1). + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the Type property. + + + + + Clear the property. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present (cluster id is deprecated in AMQP 0-9-1). + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the Type property is present. + + + + + Returns true if the UserId property is present. + + + + Sets to either persistent (2) or non-persistent (1). + + + The numbers 1 and 2 for delivery mode are "magic" in that + they appear in the AMQP 0-8 and 0-9 specifications as part + of the definition of the DeliveryMode Basic-class property, + without being defined as named constants. + + + Calling this method causes to take on a value. + In order to reset to the default empty condition, call . + + + + + + Main interface to an AMQP connection. + + + + Instances of are used to create fresh + sessions/channels. The class is used to + construct instances. + Please see the documentation for ConnectionFactory for an example of usage. + Alternatively, an API tutorial can be found in the User Guide. + + + Extends the interface, so that the "using" + statement can be used to scope the lifetime of a channel when + appropriate. + + + + + + If true, will close the whole connection as soon as there are no channels open on it; + if false, manual connection closure will be required. + + + DON'T set AutoClose to true before opening the first + channel, because the connection will be immediately closed if you do! + + + + + The maximum channel number this connection supports (0 if unlimited). + Usable channel numbers range from 1 to this number, inclusive. + + + + + A copy of the client properties that has been sent to the server. + + + + + Returns null if the connection is still in a state + where it can be used, or the cause of its closure otherwise. + + + + Applications should use the ConnectionShutdown event to + avoid race conditions. The scenario to avoid is checking + , seeing it is null (meaning the + was available for use at the time of the check), and + interpreting this mistakenly as a guarantee that the + will remain usable for a time. Instead, the + operation of interest should simply be attempted: if the + is not in a usable state, an exception will be + thrown (most likely , but may + vary depending on the particular operation being attempted). + + + + + + Retrieve the endpoint this connection is connected to. + + + + + The maximum frame size this connection supports (0 if unlimited). + + + + + The current heartbeat setting for this connection (0 for disabled), in seconds. + + + + + Returns true if the connection is still in a state where it can be used. + Identical to checking if equal null. + + + + + Returns the known hosts that came back from the + broker in the connection.open-ok method at connection + startup time. Null until the connection is completely open and ready for use. + + + + + The this connection is using to communicate with its peer. + + + + + A dictionary of the server properties sent by the server while establishing the connection. + This typically includes the product name and version of the server. + + + + + Returns the list of objects that contain information + about any errors reported while closing the connection in the order they appeared + + + + + Application-specific connection name, will be displayed in the management UI + if RabbitMQ server supports it. This value doesn't have to be unique and cannot + be used as a connection identifier, e.g. in HTTP API requests. + This value is supposed to be human-readable. + + + + + Signalled when an exception occurs in a callback invoked by the connection. + + + This event is signalled when a ConnectionShutdown handler + throws an exception. If, in future, more events appear on + , then this event will be signalled whenever one + of those event handlers throws an exception, as well. + + + + + Raised when the connection is destroyed. + + + If the connection is already destroyed at the time an + event handler is added to this event, the event handler + will be fired immediately. + + + + + Abort this connection and all its channels. + + + Note that all active channels, sessions, and models will be closed if this method is called. + In comparison to normal method, will not throw + or during closing connection. + This method waits infinitely for the in-progress close operation to complete. + + + + + Abort this connection and all its channels. + + + The method behaves in the same way as , with the only + difference that the connection is closed with the given connection close code and message. + + The close code (See under "Reply Codes" in the AMQP specification) + + + A message indicating the reason for closing the connection + + + + + + Abort this connection and all its channels and wait with a + timeout for all the in-progress close operations to complete. + + + This method, behaves in a similar way as method with the + only difference that it explictly specifies the timeout given + for all the in-progress close operations to complete. + If timeout is reached and the close operations haven't finished, then socket is forced to close. + + To wait infinitely for the close operations to complete use . + + + + + + Abort this connection and all its channels and wait with a + timeout for all the in-progress close operations to complete. + + + The method behaves in the same way as , with the only + difference that the connection is closed with the given connection close code and message. + + The close code (See under "Reply Codes" in the AMQP specification). + + + A message indicating the reason for closing the connection. + + + + + + Close this connection and all its channels. + + + Note that all active channels, sessions, and models will be + closed if this method is called. It will wait for the in-progress + close operation to complete. This method will not return to the caller + until the shutdown is complete. If the connection is already closed + (or closing), then this method will throw . + It can also throw when socket was closed unexpectedly. + + + + + Close this connection and all its channels. + + + The method behaves in the same way as , with the only + difference that the connection is closed with the given connection close code and message. + + The close code (See under "Reply Codes" in the AMQP specification). + + + A message indicating the reason for closing the connection. + + + + + + Close this connection and all its channels + and wait with a timeout for all the in-progress close operations to complete. + + + Note that all active channels, sessions, and models will be + closed if this method is called. It will wait for the in-progress + close operation to complete with a timeout. If the connection is + already closed (or closing), then this method will throw . + It can also throw when socket was closed unexpectedly. + If timeout is reached and the close operations haven't finished, then socket is forced to close. + + To wait infinitely for the close operations to complete use . + + + + + + Close this connection and all its channels + and wait with a timeout for all the in-progress close operations to complete. + + + The method behaves in the same way as , with the only + difference that the connection is closed with the given connection close code and message. + + The close code (See under "Reply Codes" in the AMQP specification). + + + A message indicating the reason for closing the connection. + + + + + + Create and return a fresh channel, session, and model. + + + + + Handle incoming Connection.Blocked methods. + + + + + Handle incoming Connection.Unblocked methods. + + + + + Dictionary of client properties to be sent to the server. + + + + + Password to use when authenticating to the server. + + + + + Maximum channel number to ask for. + + + + + Frame-max parameter to ask for (in bytes). + + + + + Heartbeat setting to request (in seconds). + + + + + When set to true, background threads will be used for I/O and heartbeats. + + + + + Username to use when authenticating to the server. + + + + + Virtual host to access during this connection. + + + + + Given a list of mechanism names supported by the server, select a preferred mechanism, + or null if we have none in common. + + + + + Create a connection to the specified endpoint. + + + + + Create a connection to the specified endpoint. + + /// Application-specific connection name, will be displayed in the management UI + if RabbitMQ server supports it. This value doesn't have to be unique and cannot + be used as a connection identifier, e.g. in HTTP API requests. + This value is supposed to be human-readable. + + + + + + Connects to the first reachable hostname from the list. + + List of host names to use + + + + + Connects to the first reachable hostname from the list. + + List of host names to use + + Application-specific connection name, will be displayed in the management UI + if RabbitMQ server supports it. This value doesn't have to be unique and cannot + be used as a connection identifier, e.g. in HTTP API requests. + This value is supposed to be human-readable. + + + + + + Advanced option. + + What task scheduler should consumer dispatcher use. + + + + + Amount of time protocol handshake operations are allowed to take before + timing out. + + + + + Amount of time protocol operations (e.g. queue.declare) are allowed to take before + timing out. + + + + + A decoded AMQP content header frame. + + + + + Retrieve the AMQP class ID of this content header. + + + + + Retrieve the AMQP class name of this content header. + + + + + Return all AmqpTcpEndpoints in the order they should be tried. + + + + + A decoded AMQP method frame. + + + + AMQP methods can be RPC requests, RPC responses, exceptions + (ChannelClose, ConnectionClose), or one-way asynchronous + messages. Currently this information is not recorded in their + type or interface: it is implicit in the way the method is + used, and the way it is defined in the AMQP specification. A + future revision of the RabbitMQ .NET client library may extend + the IMethod interface to represent this information + explicitly. + + + + + + Retrieves the class ID number of this method, as defined in the AMQP specification XML. + + + + + Retrieves the method ID number of this method, as defined in the AMQP specification XML. + + + + + Retrieves the name of this method - for debugging use. + + + + + Common AMQP model, spanning the union of the + functionality offered by versions 0-8, 0-8qpid, 0-9 and 0-9-1 of AMQP. + + + Extends the interface, so that the "using" + statement can be used to scope the lifetime of a channel when appropriate. + + + + + Channel number, unique per connections. + + + + + Returns null if the session is still in a state where it can be used, + or the cause of its closure otherwise. + + + + Signalled when an unexpected message is delivered + + Under certain circumstances it is possible for a channel to receive a + message delivery which does not match any consumer which is currently + set up via basicConsume(). This will occur after the following sequence + of events: + + ctag = basicConsume(queue, consumer); // i.e. with explicit acks + // some deliveries take place but are not acked + basicCancel(ctag); + basicRecover(false); + + Since requeue is specified to be false in the basicRecover, the spec + states that the message must be redelivered to "the original recipient" + - i.e. the same channel / consumer-tag. But the consumer is no longer + active. + + In these circumstances, you can register a default consumer to handle + such deliveries. If no default consumer is registered an + InvalidOperationException will be thrown when such a delivery arrives. + + Most people will not need to use this. + + + + Returns true if the model is no longer in a state where it can be used. + + + + + Returns true if the model is still in a state where it can be used. + Identical to checking if equals null. + + + + When in confirm mode, return the sequence number of the next message to be published. + + + + + Signalled when a Basic.Ack command arrives from the broker. + + + + + Signalled when a Basic.Nack command arrives from the broker. + + + + + All messages received before this fires that haven't been ack'ed will be redelivered. + All messages received afterwards won't be. + + + Handlers for this event are invoked by the connection thread. + It is sometimes useful to allow that thread to know that a recover-ok + has been received, rather than the thread that invoked . + + + + + Signalled when a Basic.Return command arrives from the broker. + + + + + Signalled when an exception occurs in a callback invoked by the model. + + Examples of cases where this event will be signalled + include exceptions thrown in methods, or + exceptions thrown in delegates etc. + + + + + Notifies the destruction of the model. + + + If the model is already destroyed at the time an event + handler is added to this event, the event handler will be fired immediately. + + + + + Abort this session. + + + If the session is already closed (or closing), then this + method does nothing but wait for the in-progress close + operation to complete. This method will not return to the + caller until the shutdown is complete. + In comparison to normal method, will not throw + or or any other during closing model. + + + + + Abort this session. + + + The method behaves in the same way as , with the only + difference that the model is closed with the given model close code and message. + + The close code (See under "Reply Codes" in the AMQP specification) + + + A message indicating the reason for closing the model + + + + + + (Spec method) Acknowledge one or more delivered message(s). + + + + + Delete a Basic content-class consumer. + + + + Start a Basic content-class consumer. + + + + (Spec method) Retrieve an individual message, if + one is available; returns null if the server answers that + no messages are currently available. See also . + + + + Reject one or more delivered message(s). + + + + (Spec method) Publishes a message. + + + + + (Spec method) Configures QoS parameters of the Basic content-class. + + + + + (Spec method). + + + + + (Spec method). + + + + (Spec method) Reject a delivered message. + + + Close this session. + + If the session is already closed (or closing), then this + method does nothing but wait for the in-progress close + operation to complete. This method will not return to the + caller until the shutdown is complete. + + + + Close this session. + + The method behaves in the same way as Close(), with the only + difference that the model is closed with the given model + close code and message. + + The close code (See under "Reply Codes" in the AMQP specification) + + + A message indicating the reason for closing the model + + + + + + Enable publisher acknowledgements. + + + + + Construct a completely empty content header for use with the Basic content class. + + + + + (Extension method) Bind an exchange to an exchange. + + + + + Like ExchangeBind but sets nowait to true. + + + + (Spec method) Declare an exchange. + + The exchange is declared non-passive and non-internal. + The "nowait" option is not exercised. + + + + + Same as ExchangeDeclare but sets nowait to true and returns void (as there + will be no response from the server). + + + + + (Spec method) Declare an exchange. + + + The exchange is declared passive. + + + + + (Spec method) Delete an exchange. + + + + + Like ExchangeDelete but sets nowait to true. + + + + + (Extension method) Unbind an exchange from an exchange. + + + + + Like ExchangeUnbind but sets nowait to true. + + + + + (Spec method) Bind a queue to an exchange. + + + + Same as QueueBind but sets nowait parameter to true. + + + (Spec method) Declare a queue. + + + + Same as QueueDeclare but sets nowait to true and returns void (as there + will be no response from the server). + + + + Declare a queue passively. + + The queue is declared passive, non-durable, + non-exclusive, and non-autodelete, with no arguments. + The queue is declared passively; i.e. only check if it exists. + + + + + Returns the number of messages in a queue ready to be delivered + to consumers. This method assumes the queue exists. If it doesn't, + an exception will be closed with an exception. + + The name of the queue + + + + Returns the number of consumers on a queue. + This method assumes the queue exists. If it doesn't, + an exception will be closed with an exception. + + The name of the queue + + + + (Spec method) Delete a queue. + + + Returns the number of messages purged during queue deletion. + uint.MaxValue. + + + + + Same as QueueDelete but sets nowait parameter to true + and returns void (as there will be no response from the server) + + + + + (Spec method) Purge a queue of messages. + + + Returns the number of messages purged. + + + + + (Spec method) Unbind a queue from an exchange. + + + + + (Spec method) Commit this session's active TX transaction. + + + + + (Spec method) Roll back this session's active TX transaction. + + + + + (Spec method) Enable TX mode for this session. + + + + Wait until all published messages have been confirmed. + + + Waits until all messages published since the last call have + been either ack'd or nack'd by the broker. Returns whether + all the messages were ack'd (and none were nack'd). Note, + throws an exception when called on a non-Confirm channel. + + + + + Wait until all published messages have been confirmed. + + True if no nacks were received within the timeout, otherwise false. + How long to wait (at most) before returning + whether or not any nacks were returned. + + + Waits until all messages published since the last call have + been either ack'd or nack'd by the broker. Returns whether + all the messages were ack'd (and none were nack'd). Note, + throws an exception when called on a non-Confirm channel. + + + + + Wait until all published messages have been confirmed. + + True if no nacks were received within the timeout, otherwise false. + How long to wait (at most) before returning + whether or not any nacks were returned. + + True if the method returned because + the timeout elapsed, not because all messages were ack'd or at least one nack'd. + + + Waits until all messages published since the last call have + been either ack'd or nack'd by the broker. Returns whether + all the messages were ack'd (and none were nack'd). Note, + throws an exception when called on a non-Confirm channel. + + + + + Wait until all published messages have been confirmed. + + + Waits until all messages published since the last call have + been ack'd by the broker. If a nack is received, throws an + OperationInterrupedException exception immediately. + + + + + Wait until all published messages have been confirmed. + + + Waits until all messages published since the last call have + been ack'd by the broker. If a nack is received or the timeout + elapses, throws an OperationInterrupedException exception immediately. + + + + + Amount of time protocol operations (e.g. queue.declare) are allowed to take before + timing out. + + + + Start a Basic content-class consumer. + + + Start a Basic content-class consumer. + + + Start a Basic content-class consumer. + + + Start a Basic content-class consumer. + + + + (Extension method) Convenience overload of BasicPublish. + + + The publication occurs with mandatory=false and immediate=false. + + + + + (Extension method) Convenience overload of BasicPublish. + + + The publication occurs with mandatory=false + + + + + (Spec method) Convenience overload of BasicPublish. + + + + + (Spec method) Declare a queue. + + + + + (Extension method) Bind an exchange to an exchange. + + + + + (Extension method) Like exchange bind but sets nowait to true. + + + + + (Spec method) Declare an exchange. + + + + + (Extension method) Like ExchangeDeclare but sets nowait to true. + + + + + (Spec method) Unbinds an exchange. + + + + + (Spec method) Deletes an exchange. + + + + + (Extension method) Like ExchangeDelete but sets nowait to true. + + + + + (Spec method) Binds a queue. + + + + + (Spec method) Deletes a queue. + + + + + (Extension method) Like QueueDelete but sets nowait to true. + + + + + (Spec method) Unbinds a queue. + + + + + Object describing various overarching parameters + associated with a particular AMQP protocol variant. + + + + + Retrieve the protocol's API name, used for printing, + configuration properties, IDE integration, Protocols.cs etc. + + + + + Retrieve the protocol's default TCP port. + + + + + Retrieve the protocol's major version number. + + + + + Retrieve the protocol's minor version number. + + + + + Retrieve the protocol's revision (if specified). + + + + + Construct a connection from a given set of parameters, + a frame handler, and no automatic recovery. + The "insist" parameter is passed on to the AMQP connection.open method. + + + + + Construct a connection from a given set of parameters, + a frame handler, and automatic recovery settings. + + + + + Construct a connection from a given set of parameters, + a frame handler, a client-provided name, and no automatic recovery. + The "insist" parameter is passed on to the AMQP connection.open method. + + + + + Construct a connection from a given set of parameters, + a frame handler, a client-provided name, and automatic recovery settings. + + + + + Construct a protocol model atop a given session. + + + + + A implementation that + uses a to buffer incoming deliveries. + + + + This interface is provided to make creation of test doubles + for easier. + + + + + + A marker interface for entities that are recoverable (currently connection or channel). + + + + + Common AMQP Stream content-class headers interface, + spanning the union of the functionality offered by versions 0-8, 0-8qpid, 0-9 and 0-9-1 of AMQP. + + + + The specification code generator provides + protocol-version-specific implementations of this interface. To + obtain an implementation of this interface in a + protocol-version-neutral way, use IModel.CreateStreamProperties(). + + + Each property is readable, writable and clearable: a cleared + property will not be transmitted over the wire. Properties on a fresh instance are clear by default. + + + + + + MIME content encoding. + + + + + MIME content type. + + + + + Message header field table. + + + + + Message priority, 0 to 9. + + + + + Message timestamp. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Wrapper interface for standard TCP-client. Provides socket for socket frame handler class. + + Contains all methods that are currenty in use in rabbitmq client. + + + + Common interface for network (TCP/IP) connection classes. + + + + + Local port. + + + + + Remote port. + + + + + The name of the authentication mechanism, as negotiated on the wire. + + + + + Return a new authentication mechanism implementation. + + + + + Provides access to the supported implementations. + + + + + Protocol version 0-9-1 as modified by Pivotal. + + + + + Retrieve the current default protocol variant (currently AMQP_0_9_1). + + + + + Container for an exchange name, exchange type and + routing key, usable as the target address of a message to be published. + + + + The syntax used for the external representation of instances + of this class is compatible with QPid's "Reply-To" field + pseudo-URI format. The pseudo-URI format is + (exchange-type)://(exchange-name)/(routing-key), where + exchange-type is one of the permitted exchange type names (see + class ExchangeType), exchange-name must be present but may be + empty, and routing-key must be present but may be empty. + + + The syntax is as it is solely for compatibility with QPid's + existing usage of the ReplyTo field; the AMQP specifications + 0-8 and 0-9 do not define the format of the field, and do not + define any format for the triple (exchange name, exchange + type, routing key) that could be used instead. Please see also + the way class RabbitMQ.Client.MessagePatterns.SimpleRpcServer + uses the ReplyTo field. + + + + + + Regular expression used to extract the exchange-type, + exchange-name and routing-key from a string. + + + + + Creates a new instance of the . + + Exchange type. + Exchange name. + Routing key. + + + + Retrieve the exchange name. + + + + + Retrieve the exchange type string. + + + + + Retrieve the routing key. + + + + + Parse a out of the given string, + using the regex. + + + + + Reconstruct the "uri" from its constituents. + + + + + Represents Queue info. + + + + + Creates a new instance of the . + + Queue name. + Message count. + Consumer count. + + + + Consumer count. + + + + + Message count. + + + + + Queue name. + + + + + A implementation that + uses a to buffer incoming deliveries. + + + + Received messages are placed in the SharedQueue as instances + of . + + + Note that messages taken from the SharedQueue may need + acknowledging with . + + + When the consumer is closed, through BasicCancel or through + the shutdown of the underlying or , + the method is called, which causes any + Enqueue() operations, and Dequeue() operations when the queue + is empty, to throw EndOfStreamException (see the comment for ). + + + The following is a simple example of the usage of this class: + + + IModel channel = ...; + QueueingBasicConsumer consumer = new QueueingBasicConsumer(channel); + channel.BasicConsume(queueName, null, consumer); + + // At this point, messages will be being asynchronously delivered, + // and will be queueing up in consumer.Queue. + + while (true) { + try { + BasicDeliverEventArgs e = (BasicDeliverEventArgs) consumer.Queue.Dequeue(); + // ... handle the delivery ... + channel.BasicAck(e.DeliveryTag, false); + } catch (EndOfStreamException ex) { + // The consumer was cancelled, the model closed, or the + // connection went away. + break; + } + } + + + + + + Creates a fresh , + initialising the property to null + and the property to a fresh . + + + + + Creates a fresh , with + set to the argument, and set to a fresh . + + + + + Creates a fresh , + initialising the + and properties to the given values. + + + + + Retrieves the that messages arrive on. + + + + + Overrides 's implementation, + building a instance and placing it in the Queue. + + + + + Overrides 's OnCancel implementation, + extending it to call the Close() method of the . + + + + + Information about the reason why a particular model, session, or connection was destroyed. + + + The and properties should be used to determine the originator of the shutdown event. + + + + + Construct a with the given parameters and + 0 for and . + + + + + Construct a with the given parameters. + + + + + Object causing the shutdown, or null if none. + + + + + AMQP content-class ID, or 0 if none. + + + + + Returns the source of the shutdown event: either the application, the library, or the remote peer. + + + + + AMQP method ID within a content-class, or 0 if none. + + + + + One of the standardised AMQP reason codes. See RabbitMQ.Client.Framing.*.Constants. + + + + + Informative human-readable reason text. + + + + + Override ToString to be useful for debugging. + + + + + Describes the source of a shutdown event. + + + + + The shutdown event originated from the application using the RabbitMQ .NET client library. + + + + + The shutdown event originated from the RabbitMQ .NET client library itself. + + + Shutdowns with this ShutdownInitiator code may appear if, + for example, an internal error is detected by the client, + or if the server sends a syntactically invalid + frame. Another potential use is on IConnection AutoClose. + + + + + The shutdown event originated from the remote AMQP peer. + + + A valid received connection.close or channel.close event + will manifest as a shutdown with this ShutdownInitiator. + + + + + Single entry object in the shutdown report that encapsulates description + of the error which occured during shutdown. + + + + + Description provided in the error. + + + + + object that occured during shutdown, or null if unspecified. + + + + + Represents an which does the actual heavy lifting to set up an SSL connection, + using the config options in an to make things cleaner. + + + + + Upgrade a Tcp stream to an Ssl stream using the SSL options provided. + + + + + Represents a configurable SSL option, used in setting up an SSL connection. + + + + + Constructs an SslOption specifying both the server cannonical name and the client's certificate path. + + + + + Constructs an with no parameters set. + + + + + Retrieve or set the set of ssl policy errors that are deemed acceptable. + + + + + Retrieve or set the path to client certificate. + + + + + Retrieve or set the path to client certificate. + + + + + An optional client specified SSL certificate selection callback. If this is not specified, + the first valid certificate found will be used. + + + + + An optional client specified SSL certificate validation callback. If this is not specified, + the default callback will be used in conjunction with the property to + determine if the remote server certificate is valid. + + + + + Retrieve or set the X509CertificateCollection containing the client certificate. + If no collection is set, the client will attempt to load one from the specified . + + + + + Flag specifying if Ssl should indeed be used. + + + + + Retrieve or set server's Canonical Name. + This MUST match the CN on the Certificate else the SSL connection will fail. + + + + + Retrieve or set the Ssl protocol version. + + + + + Framework for constructing various types of AMQP. Basic-class application messages. + + + + + By default, new instances of BasicMessageBuilder and its subclasses will have this much initial buffer space. + + + + + Construct an instance ready for writing. + + + The is used for the initial accumulator buffer size. + + + + + Construct an instance ready for writing. + + + + + Retrieve the associated with this instance. + + + + + Retrieve this instance's writing to BodyStream. + + + If no instance exists, one is created, + pointing at the beginning of the accumulator. If one + already exists, the existing instance is returned. The + instance is not reset. + + + + + Retrieve the being used to construct the message body. + + + + + Retrieves the dictionary that will be used to construct the message header table. + It is of type . + + + + + Finish and retrieve the content body for transmission. + + + + + Returns the default MIME content type for messages this instance constructs, + or null if none is available or relevant. + + + + + Returns the default MIME content type for messages this instance constructs, + or null if none is available or relevant. + + + + + Write a single byte into the message body, without encoding or interpretation. + + + + + Write a byte array into the message body, without encoding or interpretation. + + + + + Write a section of a byte array into the message body, without encoding or interpretation. + + + + + Framework for analyzing various types of AMQP Basic-class application messages. + + + + + Construct an instance ready for reading. + + + + + Retrieve the associated with this instance. + + + + + Retrieve this instance's NetworkBinaryReader reading from . + + + If no NetworkBinaryReader instance exists, one is created, + pointing at the beginning of the body. If one already + exists, the existing instance is returned. The instance is + not reset. + + + + + Retrieve the message body, as a byte array. + + + + + Retrieve the being used to read from the message body. + + + + + Retrieves the content header properties of the message being read. Is of type . + + + + + Read a single byte from the body stream, without encoding or interpretation. + Returns -1 for end-of-stream. + + + + + Read bytes from the body stream into a section of + an existing byte array, without encoding or + interpretation. Returns the number of bytes read from the + body and written into the target array, which may be less + than the number requested if the end-of-stream is reached. + + + + + Constructs AMQP Basic-class messages binary-compatible with QPid's "BytesMessage" wire encoding. + + + + + MIME type associated with QPid BytesMessages. + + + + + Construct an instance for writing. See . + + + + + Construct an instance for writing. See . + + + + + Write a section of a byte array into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Write a array into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes an value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Returns the default MIME content type for messages this instance constructs, + or null if none is available or relevant. + + + + + Analyzes AMQP Basic-class messages binary-compatible with QPid's "BytesMessage" wire encoding. + + + + + MIME type associated with QPid BytesMessages. + + + + + Construct an instance for reading. See . + + + + + Reads a given number ("count") of bytes from the message body, + placing them into "target", starting at "offset". + + + + + Reads a from the message body. + + + + + Reads a given number of bytes from the message body. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Reads an from the message body. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Internal support class for use in reading and + writing information binary-compatible with QPid's "BytesMessage" wire encoding. + + + + + Interface for constructing messages binary-compatible with QPid's "BytesMessage" wire encoding. + + + + + Write a section of a byte array into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Write a array into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes an value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Analyzes messages binary-compatible with QPid's "BytesMessage" wire encoding. + + + + + Reads a given number ("count") of bytes from the message body, + placing them into "target", starting at "offset". + + + + + Reads a from the message body. + + + + + Reads a given number of bytes from the message body. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Reads an from the message body. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Interface for constructing messages binary-compatible with QPid's "MapMessage" wire encoding. + + + + + Retrieves the dictionary that will be written into the body of the message. + + + + + Analyzes messages binary-compatible with QPid's "MapMessage" wire encoding. + + + + + Parses the message body into an instance. + + + + + Interface for constructing application messages. + + + Subinterfaces provide specialized data-writing methods. This + base interface deals with the lowest common denominator: + bytes, with no special encodings for higher-level objects. + + + + + Retrieve the being used to construct the message body. + + + + + Retrieves the dictionary that will be used to construct the message header table. + It is of type . + + + + + Finish and retrieve the content body for transmission. + + + + + Finish and retrieve the content header for transmission. + + + + + Returns the default MIME content type for messages this instance constructs, + or null if none is available or relevant. + + + + + Write a single byte into the message body, without encoding or interpretation. + + + + + Write a byte array into the message body, without encoding or interpretation. + + + + + Write a section of a byte array into the message body, without encoding or interpretation. + + + + + Interface for analyzing application messages. + + + Subinterfaces provide specialized data-reading methods. This + base interface deals with the lowest common denominator: + bytes, with no special encodings for higher-level objects. + + + + + Retrieve the message body, as a byte array. + + + + + Retrieve the being used to read from the message body. + + + + + Retrieves the content header properties of the message being read. Is of type . + + + + + Read a single byte from the body stream, without encoding or interpretation. + Returns -1 for end-of-stream. + + + + + Read bytes from the body stream into a section of + an existing byte array, without encoding or + interpretation. Returns the number of bytes read from the + body and written into the target array, which may be less + than the number requested if the end-of-stream is reached. + + + + + Interface for constructing messages binary-compatible with QPid's "StreamMessage" wire encoding. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a section of a byte array into the message body being assembled. + + + + + Writes a array into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes an value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes an value into the message body being assembled. + + + The only permitted types are bool, int, short, byte, char, + long, float, double, byte[] and string. + + + + + Writes objects using WriteObject(), one after the other. No length indicator is written. + See also . + + + + + Writes a value into the message body being assembled. + + + + + Writes a string value into the message body being assembled. + + + + + Analyzes messages binary-compatible with QPid's "StreamMessage" wire encoding. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Reads a array from the message body. + The body contains information about the size of the array to read. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Reads an from the message body. + + + + + Reads a from the message body. + + + + + Reads an from the message body. + + + + + Reads array from the message body until the end-of-stream is reached. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Constructs AMQP Basic-class messages binary-compatible with QPid's "MapMessage" wire encoding. + + + + + MIME type associated with QPid MapMessages. + + + + + Construct an instance for writing. See . + + + + + Construct an instance for writing. See . + + + + + Retrieves the dictionary that will be written into the body of the message. + + + + + Finish and retrieve the content body for transmission. + + + Calling this message clears Body to null. Subsequent calls will fault. + + + + + Returns the default MIME content type for messages this instance constructs, + or null if none is available or relevant. + + + + + Analyzes AMQP Basic-class messages binary-compatible with QPid's "MapMessage" wire encoding. + + + + + MIME type associated with QPid MapMessages. + + + + + Construct an instance for reading. See . + + + + + Parses the message body into an instance. + + . + + + + Internal support class for use in reading and + writing information binary-compatible with QPid's "MapMessage" wire encoding. + + + + + + Utility class for extracting typed values from strings. + + + + + Creates the protocol violation exception. + + Type of the target. + The source. + Instance of the . + + + + Attempt to parse a string representation of a . + + + + + + Attempt to parse a string representation of a . + + + + + + Attempt to parse a string representation of a . + + + + + + Attempt to parse a string representation of a . + + + + + + Attempt to parse a string representation of an . + + + + + + Attempt to parse a string representation of a . + + + + + + Attempt to parse a string representation of a . + + + + + + Constructs AMQP Basic-class messages binary-compatible with QPid's "StreamMessage" wire encoding. + + + + + MIME type associated with QPid StreamMessages. + + + + + Construct an instance for writing. See . + + + + + Construct an instance for writing. See . + + + + + Returns the default MIME content type for messages this instance constructs, + or null if none is available or relevant. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a section of a byte array into the message body being assembled. + + + + + Writes a array into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes an value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes an value into the message body being assembled. + + + The only permitted types are bool, int, short, byte, char, + long, float, double, byte[] and string. + + + + + Writes objects using WriteObject(), one after the other. No length indicator is written. + See also . + + + + + Writes a value into the message body being assembled. + + + + + Writes a string value into the message body being assembled. + + + + + Analyzes AMQP Basic-class messages binary-compatible with QPid's "StreamMessage" wire encoding. + + + + + MIME type associated with QPid StreamMessages. + + + + + Construct an instance for reading. See . + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Reads a array from the message body. + The body contains information about the size of the array to read. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Reads an from the message body. + + + + + Reads a from the message body. + + + + + Reads an from the message body. + + + + + Reads array from the message body until the end-of-stream is reached. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Tags used in parsing and generating StreamWireFormatting message bodies. + + + + + Internal support class for use in reading and + writing information binary-compatible with QPid's "StreamMessage" wire encoding. + + + + + + + + + + + + + + Contains all the information about a message acknowledged + from an AMQP broker within the Basic content-class. + + + The sequence number of the acknowledged message, or + the closed upper bound of acknowledged messages if multiple + is true. + + + Whether this acknoledgement applies to one message + or multiple messages. + + + Contains all the information about a message delivered + from an AMQP broker within the Basic content-class. + + + Default constructor. + + + Constructor that fills the event's properties from + its arguments. + + + The content header of the message. + + + The message body. + + + The consumer tag of the consumer that the message + was delivered to. + + + The delivery tag for this delivery. See + IModel.BasicAck. + + + The exchange the message was originally published + to. + + + The AMQP "redelivered" flag. + + + The routing key used when the message was + originally published. + + + Contains all the information about a message nack'd + from an AMQP broker within the Basic content-class. + + + The sequence number of the nack'd message, or the + closed upper bound of nack'd messages if multiple is + true. + + + Whether this nack applies to one message or + multiple messages. + + + Ignore + Clients should ignore this field. + + + Contains all the information about a message returned + from an AMQP broker within the Basic content-class. + + + The content header of the message. + + + The message body. + + + The exchange the returned message was originally + published to. + + + The AMQP reason code for the return. See + RabbitMQ.Client.Framing.*.Constants. + + + Human-readable text from the broker describing the + reason for the return. + + + The routing key used when the message was + originally published. + + + Wrap an exception thrown by a callback. + + + Access helpful information about the context in + which the wrapped exception was thrown. + + + Access the wrapped exception. + + + Describes an exception that was thrown during the + library's invocation of an application-supplied callback + handler. + + + When an exception is thrown from a callback registered with + part of the RabbitMQ .NET client library, it is caught, + packaged into a CallbackExceptionEventArgs, and passed through + the appropriate IModel's or IConnection's CallbackException + event handlers. If an exception is thrown in a + CallbackException handler, it is silently swallowed, as + CallbackException is the last chance to handle these kinds of + exception. + + + Code constructing CallbackExceptionEventArgs instances will + usually place helpful information about the context of the + call in the IDictionary available through the Detail property. + + + + + + Event relating to connection being blocked. + + + + + Access the reason why connection is blocked. + + + + Event relating to a successful consumer registration + or cancellation. + + + Construct an event containing the consumer-tag of + the consumer the event relates to. + + + Access the consumer-tag of the consumer the event + relates to. + + + + Initializes a new instance of the class. + + The tag before. + The tag after. + + + + Gets the tag before. + + + + + Gets the tag after. + + + + Experimental class exposing an IBasicConsumer's + methods as separate events. + + + Constructor which sets the Model property to the + given value. + + + Event fired on HandleBasicDeliver. + + + Event fired on HandleBasicConsumeOk. + + + Event fired on HandleModelShutdown. + + + Event fired on HandleBasicCancelOk. + + + Fires the Unregistered event. + + + Fires the Registered event. + + + Fires the Received event. + + + Fires the Shutdown event. + + + + Event relating to flow control. + + + + + Access the flow control setting. + + + + + Initializes a new instance of the class. + + The name before. + The name after. + + + + Gets the name before. + + + + + Gets the name after. + + + + + Describes an exception that was thrown during + automatic connection recovery performed by the library. + + + + Thrown when the application tries to make use of a + session or connection that has already been shut + down. + + + Construct an instance containing the given + shutdown reason. + + + Thrown when the cause is an + authentication failure. + + + Thrown when no connection could be opened during a + ConnectionFactory.CreateConnection attempt. + + + Construct a BrokerUnreachableException. The inner exception is associated + with only one connection attempt. + + + Thrown when a SessionManager cannot allocate a new + channel number, or the requested channel number is already in + use. + + + + Indicates that there are no more free channels. + + + + + Indicates that the specified channel is in use + + The requested channel number + + + Retrieves the channel number concerned; will + return -1 in the case where "no more free channels" is + being signalled, or a non-negative integer when "channel is + in use" is being signalled. + + + Thrown when a connection to the broker fails + + + + Thrown when a session is destroyed during an RPC call to a + broker. For example, if a TCP connection dropping causes the + destruction of a session in the middle of a QueueDeclare + operation, an OperationInterruptedException will be thrown to + the caller of IModel.QueueDeclare. + + + + Construct an OperationInterruptedException with + the passed-in explanation, if any. + + + Construct an OperationInterruptedException with + the passed-in explanation and prefix, if any. + + + Retrieves the explanation for the shutdown. May + return null if no explanation is available. + + + Thrown to indicate that the peer didn't understand + the packet received from the client. Peer sent default message + describing protocol version it is using and transport parameters. + + + The peer's {'A','M','Q','P',txHi,txLo,major,minor} packet is + decoded into instances of this class. + + + + Fills the new instance's properties with the values passed in. + + + The peer's AMQP specification major version. + + + The peer's AMQP specification minor version. + + + The peer's high transport byte. + + + The peer's low transport byte. + + + Thrown when the likely cause is an + authentication failure. + + + Thrown to indicate that the peer does not support the + wire protocol version we requested immediately after opening + the TCP socket. + + + Fills the new instance's properties with the values passed in. + + + The client's AMQP specification major version. + + + The client's AMQP specification minor version. + + + The peer's AMQP specification major version. + + + The peer's AMQP specification minor version. + + + + Thrown when the model receives an RPC reply that it wasn't expecting. + + + + The unexpected reply method. + + + + Thrown when the model receives an RPC request it cannot satisfy. + + + + The name of the RPC request that could not be sent. + + + Thrown when the model cannot transmit a method field + because the version of the protocol the model is implementing + does not contain a definition for the field in + question. + + + The name of the unsupported field. + + + The name of the method involved. + + + Thrown when the wire-formatting code cannot encode a + particular .NET value to AMQP protocol format. + + + Construct a WireFormattingException with no + particular offender (i.e. null) + + + Construct a WireFormattingException with the given + offender + + + Object which this exception is complaining about; + may be null if no particular offender exists + + + API-side invocation of connection abort. + + + API-side invocation of connection abort. + + + API-side invocation of connection abort with timeout. + + + API-side invocation of connection abort with timeout. + + + API-side invocation of connection.close. + + + API-side invocation of connection.close. + + + API-side invocation of connection.close with timeout. + + + API-side invocation of connection.close with timeout. + + + Heartbeat frame for transmission. Reusable across connections. + + + Another overload of a Protocol property, useful + for exposing a tighter type. + + + Explicit implementation of IConnection.Protocol. + + + Try to close connection in a graceful way + + + Shutdown reason contains code and text assigned when closing the connection, + as well as the information about what initiated the close + + + Abort flag, if true, signals to close the ongoing connection immediately + and do not report any errors if it was already closed. + + + Timeout determines how much time internal close operations should be given + to complete. Negative or Timeout.Infinite value mean infinity. + + + + + + Loop only used while quiescing. Use only to cleanly close connection + + + + + We need to close the socket, otherwise attempting to unload the domain + could cause a CannotUnloadAppDomainException + + + + Broadcasts notification of the final shutdown of the connection. + + + + Sets the channel named in the SoftProtocolException into + "quiescing mode", where we issue a channel.close and + ignore everything except for subsequent channel.close + messages and the channel.close-ok reply that should + eventually arrive. + + + + Since a well-behaved peer will not wait indefinitely before + issuing the close-ok, we don't bother with a timeout here; + compare this to the case of a connection.close-ok, where a + timeout is necessary. + + + We need to send the close method and politely wait for a + reply before marking the channel as available for reuse. + + + As soon as SoftProtocolException is detected, we should stop + servicing ordinary application work, and should concentrate + on bringing down the channel as quickly and gracefully as + possible. The way this is done, as per the close-protocol, + is to signal closure up the stack *before* sending the + channel.close, by invoking ISession.Close. Once the upper + layers have been signalled, we are free to do what we need + to do to clean up and shut down the channel. + + + + + + May be called more than once. Should therefore be idempotent. + + + + API-side invocation of connection abort. + + + API-side invocation of connection abort. + + + API-side invocation of connection abort with timeout. + + + API-side invocation of connection abort with timeout. + + + API-side invocation of connection.close. + + + API-side invocation of connection.close. + + + API-side invocation of connection.close with timeout. + + + API-side invocation of connection.close with timeout. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Protocol major version (= 0) + + + Protocol minor version (= 9) + + + Protocol revision (= 1) + + + Protocol API name (= :AMQP_0_9_1) + + + Default TCP port (= 5672) + + + (= 1) + + + (= 2) + + + (= 3) + + + (= 8) + + + (= 4096) + + + (= 206) + + + (= 200) + + + (= 311) + + + (= 313) + + + (= 320) + + + (= 402) + + + (= 403) + + + (= 404) + + + (= 405) + + + (= 406) + + + (= 501) + + + (= 502) + + + (= 503) + + + (= 504) + + + (= 505) + + + (= 506) + + + (= 530) + + + (= 540) + + + (= 541) + + + Autogenerated type. AMQP specification method "connection.start". + + + Autogenerated type. AMQP specification method "connection.start-ok". + + + Autogenerated type. AMQP specification method "connection.secure". + + + Autogenerated type. AMQP specification method "connection.secure-ok". + + + Autogenerated type. AMQP specification method "connection.tune". + + + Autogenerated type. AMQP specification method "connection.tune-ok". + + + Autogenerated type. AMQP specification method "connection.open". + + + Autogenerated type. AMQP specification method "connection.open-ok". + + + Autogenerated type. AMQP specification method "connection.close". + + + Autogenerated type. AMQP specification method "connection.close-ok". + + + Autogenerated type. AMQP specification method "connection.blocked". + + + Autogenerated type. AMQP specification method "connection.unblocked". + + + Autogenerated type. AMQP specification method "channel.open". + + + Autogenerated type. AMQP specification method "channel.open-ok". + + + Autogenerated type. AMQP specification method "channel.flow". + + + Autogenerated type. AMQP specification method "channel.flow-ok". + + + Autogenerated type. AMQP specification method "channel.close". + + + Autogenerated type. AMQP specification method "channel.close-ok". + + + Autogenerated type. AMQP specification method "exchange.declare". + + + Autogenerated type. AMQP specification method "exchange.declare-ok". + + + Autogenerated type. AMQP specification method "exchange.delete". + + + Autogenerated type. AMQP specification method "exchange.delete-ok". + + + Autogenerated type. AMQP specification method "exchange.bind". + + + Autogenerated type. AMQP specification method "exchange.bind-ok". + + + Autogenerated type. AMQP specification method "exchange.unbind". + + + Autogenerated type. AMQP specification method "exchange.unbind-ok". + + + Autogenerated type. AMQP specification method "queue.declare". + + + Autogenerated type. AMQP specification method "queue.declare-ok". + + + Autogenerated type. AMQP specification method "queue.bind". + + + Autogenerated type. AMQP specification method "queue.bind-ok". + + + Autogenerated type. AMQP specification method "queue.unbind". + + + Autogenerated type. AMQP specification method "queue.unbind-ok". + + + Autogenerated type. AMQP specification method "queue.purge". + + + Autogenerated type. AMQP specification method "queue.purge-ok". + + + Autogenerated type. AMQP specification method "queue.delete". + + + Autogenerated type. AMQP specification method "queue.delete-ok". + + + Autogenerated type. AMQP specification method "basic.qos". + + + Autogenerated type. AMQP specification method "basic.qos-ok". + + + Autogenerated type. AMQP specification method "basic.consume". + + + Autogenerated type. AMQP specification method "basic.consume-ok". + + + Autogenerated type. AMQP specification method "basic.cancel". + + + Autogenerated type. AMQP specification method "basic.cancel-ok". + + + Autogenerated type. AMQP specification method "basic.publish". + + + Autogenerated type. AMQP specification method "basic.return". + + + Autogenerated type. AMQP specification method "basic.deliver". + + + Autogenerated type. AMQP specification method "basic.get". + + + Autogenerated type. AMQP specification method "basic.get-ok". + + + Autogenerated type. AMQP specification method "basic.get-empty". + + + Autogenerated type. AMQP specification method "basic.ack". + + + Autogenerated type. AMQP specification method "basic.reject". + + + Autogenerated type. AMQP specification method "basic.recover-async". + + + Autogenerated type. AMQP specification method "basic.recover". + + + Autogenerated type. AMQP specification method "basic.recover-ok". + + + Autogenerated type. AMQP specification method "basic.nack". + + + Autogenerated type. AMQP specification method "tx.select". + + + Autogenerated type. AMQP specification method "tx.select-ok". + + + Autogenerated type. AMQP specification method "tx.commit". + + + Autogenerated type. AMQP specification method "tx.commit-ok". + + + Autogenerated type. AMQP specification method "tx.rollback". + + + Autogenerated type. AMQP specification method "tx.rollback-ok". + + + Autogenerated type. AMQP specification method "confirm.select". + + + Autogenerated type. AMQP specification method "confirm.select-ok". + + + Autogenerated type. AMQP specification content header properties for content class "basic" + + + + Application Id. + + + + + Intra-cluster routing identifier (cluster id is deprecated in AMQP 0-9-1). + + + + + MIME content encoding. + + + + + MIME content type. + + + + + Application correlation identifier. + + + + + Non-persistent (1) or persistent (2). + + + + + Message expiration specification. + + + + + Message header field table. Is of type . + + + + + Application message Id. + + + + + Sets to either persistent (2) or non-persistent (1). + + + + + Message priority, 0 to 9. + + + + + Destination to reply to. + + + + + Convenience property; parses property using , + and serializes it using . + Returns null if property cannot be parsed by . + + + + + Message timestamp. + + + + + Message type name. + + + + + User Id. + + + + + Clear the property. + + + + + Clear the property (cluster id is deprecated in AMQP 0-9-1). + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the Type property. + + + + + Clear the property. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present (cluster id is deprecated in AMQP 0-9-1). + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the Type property is present. + + + + + Returns true if the UserId property is present. + + + + Sets to either persistent (2) or non-persistent (1). + + + The numbers 1 and 2 for delivery mode are "magic" in that + they appear in the AMQP 0-8 and 0-9 specifications as part + of the definition of the DeliveryMode Basic-class property, + without being defined as named constants. + + + Calling this method causes to take on a value. + In order to reset to the default empty condition, call . + + + + + Thrown when the server sends a frame along a channel + that we do not currently have a Session entry in our + SessionManager for. + + + The channel number concerned. + + + + Retrieve the AMQP class ID of this content header. + + + + + Retrieve the AMQP class name of this content header. + + + + + Fill this instance from the given byte buffer stream. + + + + A type of . + + + + Returns a random item from the list. + + Element item type + Input list + + + + Subclass of ProtocolException representing problems + requiring a connection.close. + + + Socket read timeout, in milliseconds. Zero signals "infinity". + + + Socket write timeout, in milliseconds. Zero signals "infinity". + + + Read a frame from the underlying + transport. Returns null if the read operation timed out + (see Timeout property). + + + Not part of the public API. Extension of IModel to + include utilities and connection-setup routines needed by the + implementation side. + + This interface is used by the API autogeneration + process. The AMQP XML specifications are read by the spec + compilation tool, and after the basic method interface and + implementation classes are generated, this interface is + scanned, and a spec-version-specific implementation is + autogenerated. Annotations are used on certain methods, return + types, and parameters, to customise the details of the + autogeneration process. + + + + + + Sends a Connection.TuneOk. Used during connection + initialisation. + + + Handle incoming Basic.Ack methods. Signals a + BasicAckEvent. + + + Handle incoming Basic.CancelOk methods. + + + Handle incoming Basic.ConsumeOk methods. + + + Handle incoming Basic.Deliver methods. Dispatches + to waiting consumers. + + + Handle incoming Basic.GetEmpty methods. Routes the + information to a waiting Basic.Get continuation. + + Note that the clusterId field is ignored, as in the + specification it notes that it is "deprecated pending + review". + + + + Handle incoming Basic.GetOk methods. Routes the + information to a waiting Basic.Get continuation. + + + Handle incoming Basic.Nack methods. Signals a + BasicNackEvent. + + + Handle incoming Basic.RecoverOk methods + received in reply to Basic.Recover. + + + + Handle incoming Basic.Return methods. Signals a + BasicReturnEvent. + + + Handle an incoming Channel.Close. Shuts down the + session and model. + + + Handle an incoming Channel.CloseOk. + + + Handle incoming Channel.Flow methods. Either + stops or resumes sending the methods that have content. + + + Handle an incoming Connection.Blocked. + + + Handle an incoming Connection.Close. Shuts down the + connection and all sessions and models. + + + Handle an incoming Connection.OpenOk. + + + Handle incoming Connection.Secure + methods. + + + Handle an incoming Connection.Start. Used during + connection initialisation. + + + Handle incoming Connection.Tune + methods. + + + Handle an incominga Connection.Unblocked. + + + Handle incoming Queue.DeclareOk methods. Routes the + information to a waiting Queue.DeclareOk continuation. + + + Used to send a Basic.Cancel method. The public + consume API calls this while also managing internal + datastructures. + + + Used to send a Basic.Consume method. The public + consume API calls this while also managing internal + datastructures. + + + Used to send a Basic.Get. Basic.Get is a special + case, since it can result in a Basic.GetOk or a + Basic.GetEmpty, so this level of manual control is + required. + + + Used to send a Basic.Publish method. Called by the + public publish method after potential null-reference issues + have been rectified. + + + Used to send a Channel.Close. Called during + session shutdown. + + + Used to send a Channel.CloseOk. Called during + session shutdown. + + + Used to send a Channel.FlowOk. Confirms that + Channel.Flow from the broker was processed. + + + Used to send a Channel.Open. Called during session + initialisation. + + + Used to send a Confirm.Select method. The public + confirm API calls this while also managing internal + datastructures. + + + Used to send a Connection.Close. Called during + connection shutdown. + + + Used to send a Connection.CloseOk. Called during + connection shutdown. + + + Used to send a Connection.Open. Called during + connection startup. + + + Used to send a Connection.SecureOk. Again, this is + special, like Basic.Get. + + + Used to send a Connection.StartOk. This is + special, like Basic.Get. + + + Used to send a Exchange.Bind method. Called by the + public bind method. + + + + Used to send a Exchange.Declare method. Called by the + public declare method. + + + + Used to send a Exchange.Delete method. Called by the + public delete method. + + + + Used to send a Exchange.Unbind method. Called by the + public unbind method. + + + + Used to send a Queue.Bind method. Called by the + public bind method. + + + Used to send a Queue.Declare method. Called by the + public declare method. + + + Used to send a Queue.Delete method. Called by the + public delete method. + + + Used to send a Queue.Purge method. Called by the + public purge method. + + + Essential information from an incoming Connection.Tune + method. + + + The peer's suggested channel-max parameter. + + + The peer's suggested frame-max parameter. + + + The peer's suggested heartbeat parameter. + + + + Gets the channel number. + + + + + Gets the close reason. + + + + + Single recipient - no need for multiple handlers to be informed of arriving commands. + + + + + Gets the connection. + + + + + Gets a value indicating whether this session is open. + + + + + Multicast session shutdown event. + + + + Small ISession implementation used only for channel 0. + + + Set channel 0 as quiescing + + Method should be idempotent. Cannot use base.Close + method call because that would prevent us from + sending/receiving Close/CloseOk commands + + + + Thrown when frame parsing code detects an error in the + wire-protocol encoding of a frame. + + For example, potential MalformedFrameException conditions + include frames too short, frames missing their end marker, and + invalid protocol negotiation headers. + + + + + Retrieves the class ID number of this method, as defined in the AMQP specification XML. + + + + + Retrieves the method ID number of this method, as defined in the AMQP specification XML. + + + + + Retrieves the name of this method - for debugging use. + + + + Only used to kick-start a connection open + sequence. See + + + Broadcasts notification of the final shutdown of the model. + + + Do not call anywhere other than at the end of OnSessionShutdown. + + + Must not be called when m_closeReason == null, because + otherwise there's a window when a new continuation could be + being enqueued at the same time as we're broadcasting the + shutdown event. See the definition of Enqueue() above. + + + + + Handle incoming Connection.Tune + methods. + + + Instances of subclasses of subclasses + HardProtocolException and SoftProtocolException are thrown in + situations when we detect a problem with the connection-, + channel- or wire-level parts of the AMQP protocol. + + + Retrieve the reply code to use in a + connection/channel close method. + + + Retrieve the shutdown details to use in a + connection/channel close method. Defaults to using + ShutdownInitiator.Library, and this.ReplyCode and + this.Message as the reply code and text, + respectively. + + + Small ISession implementation used during channel quiescing. + + + Manages a queue of waiting AMQP RPC requests. + + + Currently, pipelining of requests is forbidden by this + implementation. The AMQP 0-8 and 0-9 specifications themselves + forbid pipelining, but only by the skin of their teeth and + under a somewhat generous reading. + + + + + Enqueue a continuation, marking a pending RPC. + + + Continuations are retrieved in FIFO order by calling Next(). + + + In the current implementation, only one continuation can + be queued up at once. Calls to Enqueue() when a + continuation is already enqueued will result in + NotSupportedException being thrown. + + + + + Interrupt all waiting continuations. + + + There's just the one potential waiter in the current + implementation. + + + + + Retrieve the next waiting continuation. + + + It is an error to call this method when there are no + waiting continuations. In the current implementation, if + this happens, null will be returned (which will usually + result in an immediate NullPointerException in the + caller). Correct code will always arrange for a + continuation to have been Enqueue()d before calling this + method. + + + + + Normal ISession implementation used during normal channel operation. + + + Called from CheckAutoClose, in a separate thread, + when we decide to close the connection. + + + If m_autoClose and there are no active sessions + remaining, Close()s the connection with reason code + 200. + + + Replace an active session slot with a new ISession + implementation. Used during channel quiescing. + + Make sure you pass in a channelNumber that's currently in + use, as if the slot is unused, you'll get a null pointer + exception. + + + + Subclass of ProtocolException representing problems + requiring a channel.close. + + + Thrown when our peer sends a frame that contains + illegal values for one or more fields. + + + + Thrown when the connection receives a frame that it wasn't expecting. + + + + + Thrown when the protocol handlers detect an unknown class + number or method number. + + + + The AMQP content-class ID. + + + The AMQP method ID within the content-class, or 0 if none. + + + Reads an AMQP "table" definition from the reader. + + Supports the AMQP 0-8/0-9 standard entry types S, I, D, T + and F, as well as the QPid-0-8 specific b, d, f, l, s, t, + x and V types and the AMQP 0-9-1 A type. + + A . + + + Writes an AMQP "table" to the writer. + + + In this method, we assume that the stream that backs our + NetworkBinaryWriter is a positionable stream - which it is + currently (see Frame.m_accumulator, Frame.GetWriter and + Command.Transmit). + + + Supports the AMQP 0-8/0-9 standard entry types S, I, D, T + and F, as well as the QPid-0-8 specific b, d, f, l, s, t + x and V types and the AMQP 0-9-1 A type. + + + + + Writes an AMQP "table" to the writer. + + + In this method, we assume that the stream that backs our + NetworkBinaryWriter is a positionable stream - which it is + currently (see Frame.m_accumulator, Frame.GetWriter and + Command.Transmit). + + + Supports the AMQP 0-8/0-9 standard entry types S, I, D, T + and F, as well as the QPid-0-8 specific b, d, f, l, s, t + x and V types and the AMQP 0-9-1 A type. + + + + + Base class for attributes for controlling the API + autogeneration process. + + + The specification namespace (i.e. version) that + this attribute applies to, or null for all specification + versions. + + + Causes the API generator to ignore the attributed method. + + Mostly used to declare convenience overloads of + various AMQP methods in the IModel interface. Also used + to omit an autogenerated implementation of a method which + is not required for one protocol version. The API + autogeneration process should of course not attempt to produce + an implementation of the convenience methods, as they will be + implemented by hand with sensible defaults, delegating to the + autogenerated variant of the method concerned. + + + Causes the API generator to generate asynchronous + receive code for the attributed method. + + + Causes the API generator to generate + exception-throwing code for, instead of simply ignoring, the + attributed method. + + + + + Informs the API generator which AMQP method field to + use for either a parameter in a request, or for a simple result + in a reply. + + + Informs the API generator which AMQP method to use for + either a request (if applied to an IModel method) or a reply + (if applied to an IModel method result). + + + This attribute, if placed on a parameter in an IModel + method, causes it to be interpreted as a "nowait" parameter for + the purposes of autogenerated RPC reply continuation management + and control. + + + This attribute, if placed on a method in IModel, + causes the method to be interpreted as a factory method + producing a protocol-specific implementation of a common + content header interface. + + + This attribute, if placed on a parameter in a + content-carrying IModel method, causes it to be sent as part of + the content header frame. + + + This attribute, if placed on a parameter in a + content-carrying IModel method, causes it to be sent as part of + the content body frame. + + + This attribute, placed on an IModel method, causes + what would normally be an RPC, sent with ModelRpc, to be sent + as if it were oneway, with ModelSend. The assumption that this + is for a custom continuation (e.g. for BasicConsume/BasicCancel + etc.) + + + + Simple wrapper around TcpClient. + + + + Manages a subscription to a queue. + + + This interface is provided to make creation of test doubles + for easier. + + + + + Implements a simple RPC client. + + + This class sends requests that can be processed by remote + SimpleRpcServer instances. + + + The basic pattern for accessing a remote service is to + determine the exchange name and routing key needed for + submissions of service requests, and to construct a + SimpleRpcClient instance using that address. Once constructed, + the various Call() and Cast() overloads can be used to send + requests and receive the corresponding replies. + + + string queueName = "ServiceRequestQueue"; // See also Subscription ctors + using (IConnection conn = new ConnectionFactory() + .CreateConnection(serverAddress)) { + using (IModel ch = conn.CreateModel()) { + SimpleRpcClient client = + new SimpleRpcClient(ch, queueName); + client.TimeoutMilliseconds = 5000; // optional + + /// ... make use of the various Call() overloads + } + } + + + Instances of this class declare a queue, so it is the user's + responsibility to ensure that the exchange concerned exists + (using IModel.ExchangeDeclare) before invoking Call() or + Cast(). + + + This class implements only a few basic RPC message formats - + to extend it with support for more formats, either subclass, + or transcode the messages before transmission using the + built-in byte[] format. + + + + + + Construct an instance with no configured + Address. The Address property must be set before Call() or + Cast() are called. + + + Construct an instance that will deliver to the + default exchange (""), with routing key equal to the passed + in queueName, thereby delivering directly to a named queue + on the AMQP server. + + + Construct an instance that will deliver to the + named and typed exchange, with the given routing + key. + + + Construct an instance that will deliver to the + given address. + + + This event is fired whenever Call() detects the + disconnection of the underlying Subscription while waiting + for a reply from the service. + + See also OnDisconnected(). Note that the sending of a + request may result in OperationInterruptedException before + the request is even sent. + + + + This event is fired whenever Call() decides that a + timeout has occurred while waiting for a reply from the + service. + + See also OnTimedOut(). + + + + Retrieve or modify the address that will be used + for the next Call() or Cast(). + + This address represents the service, i.e. the destination + service requests should be published to. It can be changed + at any time before a Call() or Cast() request is sent - + the value at the time of the call is used by Call() and + Cast(). + + + + Retrieve the IModel this instance uses to communicate. + + + Retrieve the Subscription that is used to receive + RPC replies corresponding to Call() RPC requests. May be + null. + + + Upon construction, this property will be null. It is + initialised by the protected virtual method + EnsureSubscription upon the first call to Call(). Calls to + Cast() do not initialise the subscription, since no + replies are expected or possible when using Cast(). + + + + + Retrieve or modify the timeout (in milliseconds) + that will be used for the next Call(). + + + This property defaults to + System.Threading.Timeout.Infinite (i.e. -1). If it is set + to any other value, Call() will only wait for the + specified amount of time before returning indicating a + timeout. + + + See also TimedOut event and OnTimedOut(). + + + + + Sends a "jms/stream-message"-encoded RPC request, + and expects an RPC reply in the same format. + + + The arguments passed in must be of types that are + representable as JMS StreamMessage values, and so must the + results returned from the service in its reply message. + + + Calls OnTimedOut() and OnDisconnected() when a timeout or + disconnection, respectively, is detected when waiting for + our reply. + + + Returns null if the request timed out or if we were + disconnected before a reply arrived. + + + The reply message, if any, is acknowledged to the AMQP + server via Subscription.Ack(). + + + + + + + Sends a simple byte[] message, without any custom + headers or properties. + + + Delegates directly to Call(IBasicProperties, byte[]), and + discards the properties of the received reply, returning + only the body of the reply. + + + Calls OnTimedOut() and OnDisconnected() when a timeout or + disconnection, respectively, is detected when waiting for + our reply. + + + Returns null if the request timed out or if we were + disconnected before a reply arrived. + + + The reply message, if any, is acknowledged to the AMQP + server via Subscription.Ack(). + + + + + Sends a byte[] message and IBasicProperties + header, returning both the body and headers of the received + reply. + + + Sets the "replyProperties" outbound parameter to the + properties of the received reply, and returns the byte[] + body of the reply. + + + Calls OnTimedOut() and OnDisconnected() when a timeout or + disconnection, respectively, is detected when waiting for + our reply. + + + Both sets "replyProperties" to null and returns null when + either the request timed out or we were disconnected + before a reply arrived. + + + The reply message, if any, is acknowledged to the AMQP + server via Subscription.Ack(). + + + + + Sends a byte[]/IBasicProperties RPC request, + returning full information about the delivered reply as a + BasicDeliverEventArgs. + + + This is the most general/lowest-level Call()-style method + on SimpleRpcClient. It sets CorrelationId and ReplyTo on + the request message's headers before transmitting the + request to the service via the AMQP server. If the reply's + CorrelationId does not match the request's CorrelationId, + ProtocolViolationException will be thrown. + + + Calls OnTimedOut() and OnDisconnected() when a timeout or + disconnection, respectively, is detected when waiting for + our reply. + + + Returns null if the request timed out or if we were + disconnected before a reply arrived. + + + The reply message, if any, is acknowledged to the AMQP + server via Subscription.Ack(). + + + + + + Sends an asynchronous/one-way message to the + service. + + + Close the reply subscription associated with this instance, if any. + + Simply delegates to calling Subscription.Close(). Clears + the Subscription property, so that subsequent Call()s, if + any, will re-initialize it to a fresh Subscription + instance. + + + + Signals that the Subscription we use for receiving + our RPC replies was disconnected while we were + waiting. + + Fires the Disconnected event. + + + + Signals that the configured timeout fired while + waiting for an RPC reply. + + Fires the TimedOut event. + + + + Implement the IDisposable interface, permitting + SimpleRpcClient instances to be used in using + statements. + + + Should initialise m_subscription to be non-null + and usable for fetching RPC replies from the service + through the AMQP server. + + + Retrieves the reply for the request with the given + correlation ID from our internal Subscription. + + Currently requires replies to arrive in the same order as + the requests were sent out. Subclasses may override this + to provide more sophisticated behaviour. + + + + Implements a simple RPC service, responding to + requests received via a Subscription. + + + This class interprets requests such as those sent by instances + of SimpleRpcClient. + + + The basic pattern for implementing a service is to subclass + SimpleRpcServer, overriding HandleCall and HandleCast as + appropriate, and then to create a Subscription object for + receiving requests from clients, and start an instance of the + SimpleRpcServer subclass with the Subscription. + + + string queueName = "ServiceRequestQueue"; // See also Subscription ctors + using (IConnection conn = new ConnectionFactory() + .CreateConnection(serverAddress)) { + using (IModel ch = conn.CreateModel()) { + Subscription sub = new Subscription(ch, queueName); + new MySimpleRpcServerSubclass(sub).MainLoop(); + } + } + + + Note that this class itself does not declare any resources + (exchanges, queues or bindings). The Subscription we use for + receiving RPC requests should have already declared all the + resources we need. See the Subscription constructors and the + Subscription.Bind method. + + + If you are implementing a service that responds to + "jms/stream-message"-formatted requests (as implemented by + RabbitMQ.Client.Content.IStreamMessageReader), override + HandleStreamMessageCall. Otherwise, override HandleSimpleCall + or HandleCall as appropriate. Asynchronous, one-way requests + are dealt with by HandleCast etc. + + + Every time a request is successfully received and processed + within the server's MainLoop, the request message is Ack()ed + using Subscription.Ack before the next request is + retrieved. This causes the Subscription object to take care of + acknowledging receipt and processing of the request message. + + + If transactional service is enabled, via SetTransactional(), + then after every successful ProcessRequest, IModel.TxCommit is + called. Making use of transactional service has effects on all + parts of the application that share an IModel instance, + completely changing the style of interaction with the AMQP + server. For this reason, it is initially disabled, and must be + explicitly enabled with a call to SetTransactional(). Please + see the documentation for SetTransactional() for details. + + + To stop a running RPC server, call Close(). This will in turn + Close() the Subscription, which will cause MainLoop() to + return to its caller. + + + Unless overridden, ProcessRequest examines properties in the + request content header, and uses them to dispatch to one of + the Handle[...]() methods. See the documentation for + ProcessRequest and each Handle[...] method for details. + + + + + + Create, but do not start, an instance that will + receive requests via the given Subscription. + + + The instance is initially in non-transactional mode. See + SetTransactional(). + + + Call MainLoop() to start the request-processing loop. + + + + + Returns true if we are in "transactional" mode, or + false if we are not. + + + Shut down the server, causing MainLoop() to return + to its caller. + + Acts by calling Close() on the server's Subscription object. + + + + Called by ProcessRequest(), this is the most + general method that handles RPC-style requests. + + + This method should map requestProperties and body to + replyProperties and the returned byte array. + + + The default implementation checks + requestProperties.ContentType, and if it is + "jms/stream-message" (i.e. the current value of + StreamMessageBuilder.MimeType), parses it using + StreamMessageReader and delegates to + HandleStreamMessageCall before encoding and returning the + reply. If the ContentType is any other value, the request + is passed to HandleSimpleCall instead. + + + The isRedelivered flag is true when the server knows for + sure that it has tried to send this request previously + (although not necessarily to this application). It is not + a reliable indicator of previous receipt, however - the + only claim it makes is that a delivery attempt was made, + not that the attempt succeeded. Be careful if you choose + to use the isRedelivered flag. + + + + + Called by ProcessRequest(), this is the most + general method that handles asynchronous, one-way + requests. + + + The default implementation checks + requestProperties.ContentType, and if it is + "jms/stream-message" (i.e. the current value of + StreamMessageBuilder.MimeType), parses it using + StreamMessageReader and delegates to + HandleStreamMessageCall, passing in null as the + replyWriter parameter to indicate that no reply is desired + or possible. If the ContentType is any other value, the + request is passed to HandleSimpleCast instead. + + + The isRedelivered flag is true when the server knows for + sure that it has tried to send this request previously + (although not necessarily to this application). It is not + a reliable indicator of previous receipt, however - the + only claim it makes is that a delivery attempt was made, + not that the attempt succeeded. Be careful if you choose + to use the isRedelivered flag. + + + + + Called by the default HandleCall() implementation + as a fallback. + + If the MIME ContentType of the request did not match any + of the types specially recognised + (e.g. "jms/stream-message"), this method is called instead + with the raw bytes of the request. It should fill in + replyProperties (or set it to null) and return a byte + array to send back to the remote caller as a reply + message. + + + + Called by the default HandleCast() implementation + as a fallback. + + If the MIME ContentType of the request did not match any + of the types specially recognised + (e.g. "jms/stream-message"), this method is called instead + with the raw bytes of the request. + + + + Called by HandleCall and HandleCast when a + "jms/stream-message" request is received. + + + The args array contains the values decoded by HandleCall + or HandleCast. + + + The replyWriter parameter will be null if we were called + from HandleCast, in which case a reply is not expected or + possible, or non-null if we were called from + HandleCall. Use the methods of replyWriter in this case to + assemble your reply, which will be sent back to the remote + caller. + + + This default implementation does nothing, which + effectively sends back an empty reply to any and all + remote callers. + + + + + Enters the main loop of the RPC service. + + + Retrieves requests repeatedly from the service's + subscription. Each request is passed to + ProcessRequest. Once ProcessRequest returns, the request + is acknowledged via Subscription.Ack(). If transactional + mode is enabled, TxCommit is then called. Finally, the + loop begins again. + + + Runs until the subscription ends, which happens either as + a result of disconnection, or of a call to Close(). + + + + + Process a single request received from our + subscription. + + + If the request's properties contain a non-null, non-empty + CorrelationId string (see IBasicProperties), it is assumed + to be a two-way call, requiring a response. The ReplyTo + header property is used as the reply address (via + PublicationAddress.Parse, unless that fails, in which case it + is treated as a simple queue name), and the request is + passed to HandleCall(). + + + If the CorrelationId is absent or empty, the request is + treated as one-way asynchronous event, and is passed to + HandleCast(). + + + Usually, overriding HandleCall(), HandleCast(), or one of + their delegates is sufficient to implement a service, but + in some cases overriding ProcessRequest() is + required. Overriding ProcessRequest() gives the + opportunity to implement schemes for detecting interaction + patterns other than simple request/response or one-way + communication. + + + + + Enables transactional mode. + + + Once enabled, transactional mode is not only enabled for + all users of the underlying IModel instance, but cannot be + disabled without shutting down the entire IModel (which + involves shutting down all the services depending on it, + and should not be undertaken lightly). + + + This method calls IModel.TxSelect, every time it is + called. (TxSelect is idempotent, so this is harmless.) + + + + + Implement the IDisposable interface, permitting + SimpleRpcServer instances to be used in using + statements. + + + Manages a subscription to a queue. + + + This convenience class abstracts away from much of the detail + involved in receiving messages from a queue. + + + Once created, the Subscription consumes from a queue (using a + EventingBasicConsumer). Received deliveries can be retrieved + by calling Next(), or by using the Subscription as an + IEnumerator in, for example, a foreach loop. + + + Note that if the "noAck" option is enabled (which it is by + default), then received deliveries are automatically acked + within the server before they are even transmitted across the + network to us. Calling Ack() on received events will always do + the right thing: if "noAck" is enabled, nothing is done on an + Ack() call, and if "noAck" is disabled, IModel.BasicAck() is + called with the correct parameters. + + + + + Creates a new Subscription in "noAck" mode, + consuming from a named queue. + + + Creates a new Subscription, with full control over + both "noAck" mode and the name of the queue. + + + Creates a new Subscription, with full control over + both "noAck" mode, the name of the queue, and the consumer tag. + + + Retrieve the IBasicConsumer that is receiving the + messages from the server for us. Normally, you will not + need to access this property - use Next() and friends + instead. + + + Retrieve the consumer-tag that this subscription + is using. Will usually be a server-generated + name. + + + Returns the most recent value returned by Next(), + or null when either no values have been retrieved yet, the + end of the subscription has been reached, or the most + recent value has already been Ack()ed. See also the + documentation for Ack(). + + + Retrieve the IModel our subscription is carried by. + + + Returns true if we are in "noAck" mode, where + calls to Ack() will be no-ops, and where the server acks + messages before they are delivered to us. Returns false if + we are in a mode where calls to Ack() are required, and + where such calls will actually send an acknowledgement + message across the network to the server. + + + Retrieve the queue name we have subscribed to. + + + Implementation of the IEnumerator interface, for + permitting Subscription to be used in foreach + loops. + + + As per the IEnumerator interface definition, throws + InvalidOperationException if LatestEvent is null. + + + Does not acknowledge any deliveries at all. Ack() must be + called explicitly on received deliveries. + + + + + If LatestEvent is non-null, passes it to + Ack(BasicDeliverEventArgs). Causes LatestEvent to become + null. + + + If we are not in "noAck" mode, calls + IModel.BasicAck with the delivery-tag from ; + otherwise, sends nothing to the server. if is the same as LatestEvent + by pointer comparison, sets LatestEvent to null. + + + Passing an event that did not originate with this Subscription's + channel, will lead to unpredictable behaviour + + + + Closes this Subscription, cancelling the consumer + record in the server. + + + If LatestEvent is non-null, passes it to + Nack(BasicDeliverEventArgs, false, requeue). Causes LatestEvent to become + null. + + + If LatestEvent is non-null, passes it to + Nack(BasicDeliverEventArgs, multiple, requeue). Causes LatestEvent to become + null. + + + If we are not in "noAck" mode, calls + IModel.BasicNack with the delivery-tag from ; + otherwise, sends nothing to the server. if is the same as LatestEvent + by pointer comparison, sets LatestEvent to null. + + + Passing an event that did not originate with this Subscription's + channel, will lead to unpredictable behaviour + + + + Retrieves the next incoming delivery in our + subscription queue. + + + Returns null when the end of the stream is reached and on + every subsequent call. End-of-stream can arise through the + action of the Subscription.Close() method, or through the + closure of the IModel or its underlying IConnection. + + + Updates LatestEvent to the value returned. + + + Does not acknowledge any deliveries at all (but in "noAck" + mode, the server will have auto-acknowledged each event + before it is even sent across the wire to us). + + + + + Retrieves the next incoming delivery in our + subscription queue, or times out after a specified number + of milliseconds. + + + Returns false only if the timeout expires before either a + delivery appears or the end-of-stream is reached. If false + is returned, the out parameter "result" is set to null, + but LatestEvent is not updated. + + + Returns true to indicate a delivery or the end-of-stream. + + + If a delivery is already waiting in the queue, or one + arrives before the timeout expires, it is removed from the + queue and placed in the "result" out parameter. If the + end-of-stream is detected before the timeout expires, + "result" is set to null. + + + Whenever this method returns true, it updates LatestEvent + to the value placed in "result" before returning. + + + End-of-stream can arise through the action of the + Subscription.Close() method, or through the closure of the + IModel or its underlying IConnection. + + + This method does not acknowledge any deliveries at all + (but in "noAck" mode, the server will have + auto-acknowledged each event before it is even sent across + the wire to us). + + + A timeout of -1 (i.e. System.Threading.Timeout.Infinite) + will be interpreted as a command to wait for an + indefinitely long period of time for an item or the end of + the stream to become available. Usage of such a timeout is + equivalent to calling Next() with no arguments (modulo + predictable method signature differences). + + + + + Implementation of the IDisposable interface, + permitting Subscription to be used in using + statements. Simply calls Close(). + + + Implementation of the IEnumerable interface, for + permitting Subscription to be used in foreach + loops. + + + Implementation of the IEnumerator interface, for + permitting Subscription to be used in foreach + loops. + + + Does not acknowledge any deliveries at all. Ack() must be + called explicitly on received deliveries. + + + + + Dummy implementation of the IEnumerator interface, + for permitting Subscription to be used in foreach loops; + Reset()ting a Subscription doesn't make sense, so this + method always throws InvalidOperationException. + + + A thread-safe single-assignment reference cell. + + A fresh BlockingCell holds no value (is empty). Any thread + reading the Value property when the cell is empty will block + until a value is made available by some other thread. The Value + property can only be set once - on the first call, the + BlockingCell is considered full, and made immutable. Further + attempts to set Value result in a thrown + InvalidOperationException. + + + + Retrieve the cell's value, blocking if none exists + at present, or supply a value to an empty cell, thereby + filling it. + + + + Return valid timeout value + If value of the parameter is less then zero, return 0 + to mean infinity + + + Retrieve the cell's value, waiting for the given + timeout if no value is immediately available. + + + If a value is present in the cell at the time the call is + made, the call will return immediately. Otherwise, the + calling thread blocks until either a value appears, or + operation times out. + + + If no value was available before the timeout, an exception + is thrown. + + + + + Retrieve the cell's value, waiting for the given + timeout if no value is immediately available. + + + If a value is present in the cell at the time the call is + made, the call will return immediately. Otherwise, the + calling thread blocks until either a value appears, or + operation times out. + + + If no value was available before the timeout, an exception + is thrown. + + + + + Miscellaneous debugging and development utilities. + + Not part of the public API. + + + + Print a hex dump of the supplied bytes to stdout. + + + Print a hex dump of the supplied bytes to the supplied TextWriter. + + + Prints an indented key/value pair; used by DumpProperties() + Recurses into the value using DumpProperties(). + + + Dump properties of objects to the supplied writer. + + + Used internally by class Either. + + + Models the disjoint union of two alternatives, a + "left" alternative and a "right" alternative. + Borrowed from ML, Haskell etc. + + + Private constructor. Use the static methods Left, Right instead. + + + Retrieve the alternative represented by this instance. + + + Retrieve the value carried by this instance. + + + Constructs an Either instance representing a Left alternative. + + + Constructs an Either instance representing a Right alternative. + + + A class for allocating integer IDs in a given range. + + + A class representing a list of inclusive intervals + Creates an IntAllocator allocating integer IDs within the inclusive range [start, end] + + + Allocate a fresh integer from the range, or return -1 if no more integers + are available. This operation is guaranteed to run in O(1) + + + Make the provided integer available for allocation again. This operation + runs in amortized O(sqrt(range size)) time: About every sqrt(range size) + operations will take O(range_size + number of intervals) to complete and + the rest run in constant time. + + No error checking is performed, so if you double Free or Free an integer + that was not originally Allocated the results are undefined. Sorry. + + + + Subclass of BinaryReader that reads integers etc in correct network order. + + + + Kludge to compensate for .NET's broken little-endian-only BinaryReader. + Relies on BinaryReader always being little-endian. + + + + + + Construct a NetworkBinaryReader over the given input stream. + + + + + Construct a NetworkBinaryReader over the given input + stream, reading strings using the given encoding. + + + + Helper method for constructing a temporary + BinaryReader over a byte[]. + + + + Override BinaryReader's method for network-order. + + + + + Override BinaryReader's method for network-order. + + + + + Override BinaryReader's method for network-order. + + + + + Override BinaryReader's method for network-order. + + + + + Override BinaryReader's method for network-order. + + + + + Override BinaryReader's method for network-order. + + + + + Override BinaryReader's method for network-order. + + + + + Override BinaryReader's method for network-order. + + + + + Subclass of BinaryWriter that writes integers etc in correct network order. + + + +

+ Kludge to compensate for .NET's broken little-endian-only BinaryWriter. +

+ See also NetworkBinaryReader. +

+
+
+ + + Construct a NetworkBinaryWriter over the given input stream. + + + + + Construct a NetworkBinaryWriter over the given input + stream, reading strings using the given encoding. + + + + Helper method for constructing a temporary + BinaryWriter streaming into a fresh MemoryStream + provisioned with the given initialSize. + + + Helper method for extracting the byte[] contents + of a BinaryWriter over a MemoryStream, such as constructed + by TemporaryBinaryWriter. + + + + Override BinaryWriter's method for network-order. + + + + + Override BinaryWriter's method for network-order. + + + + + Override BinaryWriter's method for network-order. + + + + + Override BinaryWriter's method for network-order. + + + + + Override BinaryWriter's method for network-order. + + + + + Override BinaryWriter's method for network-order. + + + + + Override BinaryWriter's method for network-order. + + + + + Override BinaryWriter's method for network-order. + + + + A thread-safe shared queue implementation. + + + A thread-safe shared queue implementation. + + + Flag holding our current status. + + + The shared queue. + + Subclasses must ensure appropriate locking discipline when + accessing this field. See the implementation of Enqueue, + Dequeue. + + + + Close the queue. Causes all further Enqueue() + operations to throw EndOfStreamException, and all pending + or subsequent Dequeue() operations to throw an + EndOfStreamException once the queue is empty. + + + Retrieve the first item from the queue, or block if none available + + Callers of Dequeue() will block if no items are available + until some other thread calls Enqueue() or the queue is + closed. In the latter case this method will throw + EndOfStreamException. + + + + Retrieve the first item from the queue, or return + nothing if no items are available after the given + timeout + + + If one or more items are present on the queue at the time + the call is made, the call will return + immediately. Otherwise, the calling thread blocks until + either an item appears on the queue, or + millisecondsTimeout milliseconds have elapsed. + + + Returns true in the case that an item was available before + the timeout, in which case the out parameter "result" is + set to the item itself. + + + If no items were available before the timeout, returns + false, and sets "result" to null. + + + A timeout of -1 (i.e. System.Threading.Timeout.Infinite) + will be interpreted as a command to wait for an + indefinitely long period of time for an item to become + available. Usage of such a timeout is equivalent to + calling Dequeue() with no arguments. See also the MSDN + documentation for + System.Threading.Monitor.Wait(object,int). + + + If no items are present and the queue is in a closed + state, or if at any time while waiting the queue + transitions to a closed state (by a call to Close()), this + method will throw EndOfStreamException. + + + + + Retrieve the first item from the queue, or return + defaultValue immediately if no items are + available + + + If one or more objects are present in the queue at the + time of the call, the first item is removed from the queue + and returned. Otherwise, the defaultValue that was passed + in is returned immediately. This defaultValue may be null, + or in cases where null is part of the range of the queue, + may be some other sentinel object. The difference between + DequeueNoWait() and Dequeue() is that DequeueNoWait() will + not block when no items are available in the queue, + whereas Dequeue() will. + + + If at the time of call the queue is empty and in a + closed state (following a call to Close()), then this + method will throw EndOfStreamException. + + + + + Place an item at the end of the queue. + + If there is a thread waiting for an item to arrive, the + waiting thread will be woken, and the newly Enqueued item + will be passed to it. If the queue is closed on entry to + this method, EndOfStreamException will be thrown. + + + + Implementation of the IEnumerable interface, for + permitting SharedQueue to be used in foreach + loops. + + + Implementation of the IEnumerable interface, for + permitting SharedQueue to be used in foreach + loops. + + + Call only when the lock on m_queue is held. + + + + Implementation of the IEnumerator interface, for + permitting SharedQueue to be used in foreach loops. + + + Construct an enumerator for the given + SharedQueue. + + + Reset()ting a SharedQueue doesn't make sense, so + this method always throws + InvalidOperationException. + + + diff --git a/lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/lib/netstandard1.5/RabbitMQ.Client.dll b/lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/lib/netstandard1.5/RabbitMQ.Client.dll new file mode 100644 index 0000000000000000000000000000000000000000..de2bda8dd8e85a8133e77b8be3921d6488c52dbf GIT binary patch literal 248832 zcmdSC2bf#M6*hc#u5_i<7F*t3X}vDHw%KLSN(OteFJH3y#J~iXxEr&ie3<4a?{x4GusCNyOa9-D7riY4#s z!CJ8jL1{?%7_V@o7v{U?;#&C*-$6bDE*}&r(7Wz*W-hP2m)X1yRwa$Z71oZ@1aoth z-VLr!f^x2FkGS_7ctJMl{)wo+1s{Y@UAH!|D$o#0s@*TX29i!}xex_0!@y)Zh9~>Q zwLq#w>&ol5T;u{;vnxAVlXG9pbj60#eh~@IGkGLP$FeKCV(D0rTs8NX5qzdAK0Kll z>G;a)`v>MuvCzO~7y@;QvY7(e zyc>dxQx6Le#1$;jT#{28FGi{J!+!C4%3%Y20v2y%oDswkuaI_0CPBsWy?*gFM@DTR z%C|M4HbRM7@=0HrJ#7|i=s!c5d1TKI%zU^)OKo6~*$e)*;h}^9mDD{wK($X&dI4kY zjR)X`aQv8VMQIYI8=k_mKYA8YNNmg?c1LSIXf@M-eok$i!OT|q#rqs{s71AbSOfJ< zp{n}RamlGGm=x2az@>wbc38o2o5lCWis^V$22zTygr82-%8^d=XEb_{R97<7)jB+q zPNrLL?MkInW-*Z06{Z5(hZ&_*=2~#kV)lj4WeRocYE8GMlh>`C`vtb&7IfOmyTzOL zbuSGsVAYbJ-2&-&-tkuXm9IM>3>DK8Si{p*IRTx>%|sU>01#*v7GZ&mDz!1{%xnmF z9(Bo(D1Mf#ADc5eMK~PH6rX?u?;6bdqJ4J__7H0P=s6ZuSImvq?^2N}Az7d?oGIJ)Yvc$Ch?5b2y zVL)(0PL-J|zrwoZpDK2bL`A_DfE}5n!hjdyvw2y>phV5CtT1t|Cx^UQezcwl50(Mc zL!dM?E2v{A6(F@RLr#Z>{p?DcNW|9`_+gTSC0}74K|-8tE+|}<$$i}kbhl6# zVKGF^`faEL{dQLqDkDXr=IH%VVYwkxl!k%B{cpO@?oB&<9^1e0nluYYt*2lq1v~qbB9J zLdXtyFzQa8etIwf7r>fR&X#!S-okhXhw)(lo!sAxhya-46hM-84IoL}-@E1%Ti3pK zKGLI(kk28K9-V^xKx4t_LFfaWehos_OJc|%^jdZ#7i74eoY}0`A(Fs|0a&~20WWa* zTU`_R_0`F5GNdxOD!*R%daE*m$ahvo&;0*eMpVGVSXxm)m=&UcFmqESK`&S4NO(4! z#P0Jb24AZDu(nTo)*KBC{8B^K$3DjQ&)zm6LFALaFe3i_0^-#>8LxhenLHWip-SeAr1sMESQr;i`U z_b^)0j!yUKUC_1$eRC{`(6|dy3a!t|2aPfWvJS{tKy>HCkj8XJcu@7tYw*mYLv;R?@WZ@bC4sBy$=Y_SJPaouMmvlX3^gavh%;8@cshcJaw>Uce5|X&<~k3&>Duhw6;bJ-586)NM;=#`R7B=>)_eO{AI5twR~XXaVnbj zdqz58c%Oq*mr?B5oIV$D$a7n!J%M}&fEiw5^OxX2uLr6tJ}ItYXr$J5_^qpGL1*@8 zkJ;+WbOmFhmZfye%@1naK7?^zd}P;Vj0CAHFq9khi2YMxXj>t%{MM$YH#sfu>Ssd8j1aCOID>Fp$9R>{;ywGprqHU$j_~sHk8Y{}xQ>Ne6 z(_CfaVs2DzgL%;H+BRL^T-r?7(ajFH`u9EZr?x{UW?m0M^%M6-Ixy0u!0a2?M{JLt z+1x~~sz0v0q_f-h>6pu!$yDj|On2o|9_56I*0$vDo6A9{p#mDqHwEMGj^%{O=nmw> za_x|xH|z{QO8Dv7cDW36y|GwT`9$T+a-msmOFlbIhvnLip8Mv?W`_Rn8kH&}`pwsisn~;HT zuEsNFqa0p`v=P@RjiDa%Ga;?l04@o=!~JF)+F2GH$n02v&)7IUvlAA`DWPEY0bBWC zU{??Y3RXa1zSaV^IIU(zxjy}0`auwOnT1ehLghLb-k zFk9eu#d_M)v0ig6U>h)yj!m}S>ws%Zn71%`GNIoJcetge-6qV|;v`EVD%HQxT#q;% ztvw@2)e|DImSElnta&>g<4{wXR&xV_LL%fl?i~WYQH-?8UW@LbWiZp9zr);!Sf!ir zNMUdvo|#DADl|J-` zL4osMnrN6^^Qmt^RN8=Ip8*L|E0_&`Hg~vRB20dAl-iJQD+ZX+}o*sO$|SuUagNQti0k`e%jf%b03hZ$gaAOycL)K1*vlaV0Ahhd2mr+1 z4j}*#3mrlL>3>uUlm$O^DMqJQg<`P1YlY=ikQ0C1OY|L3pbCrZaJz&!mfGR=3~?;D zy7cE*Wg0AGhc5jYfUUtzSU)P=2{MD58B(DzR8NH>P|`zC$41Yqu-GBU0*4@r zs$?Xnu#m89Su~~JN#?4!s}#sdL> zAbWxk0Eop7Apj8jID`N|uq2X103en)gaAOWfD%IhAXrR62!L9oZS@+u?6)<>n83Un z45xlCFIfQi|Jr~~naIZW9jkhL6iH7GB}&mf;xvC;#9EOz`7PHK2S zG*4wn`$^J%A8Grb9W&2j+)j-JrTtP~uqm7~f)#Ic)C-`zEnT1wP501qr7anKKS-$Z zevrIki$Ss9DNo2b&?iIJz_I=kJSZC4Um!MWH9hQ*ok@B)B*%<=b0W!-?c7Vg%j#qB z4*U`&SS_pR<|Q97l_m#DHwONhftHuJw*vLsPg#{#lJ5KQD87saG%n(z1l0ZIEUu zC|TpKEkW}uAq0K%L8NF;+JuKBt9HmjYln2SUbnV)PP%vqa!p1uRIQm?^;cNFPvXHy zBb}->8{$3!oNqn^%1k{_yaK6Z55pqaQ=}rqs!>O}&>1k9BlKwy%B@z#Z<4@w@sNEn z{Q#om4i*~;Qe!2GEtFebLe8nd68fjWJP2^}Fk3GyQyM&>P;GZ~yvj~3J;c~q^HDgZ zLm?lurtYo5*Acb!FmM&CMjBx5(Qux;zbGY9s#|}TM7#A5>16b`t?!#~wiCTB9=bOs zrg5~~^)mthaiBv80K`EKA%OHl=-3ch-`N%7x3C>qI&IOpR%=0YtJ}5nfrLrPA^!+g_Q5(#Db`8omz_t`ht;}LZ zmb`2!F^R1$O9lCnzwqhIbdt=$53Jz(8b@0+gtp%xRZ+sANb7@d3xsBix3$~VRzg6idh8a`bxi~)MSn3 zYRF{<*p>)k#?NW5jf93!SYQJ`F~P zR3RR8#l{wm`E6rf(vC+@h&+>aJPIViq#W~0U3P_Rsh*%un&Y1NtvwkMD zh~v>cpese+;-j_3;`-C1G#}A2AaAaxkF#9KtI>N8L+9F1b8FOdTYb9Q>%DhGqhd2Z zkbM&K&MNe-XoS1z$uSpme+_(pG|C6*xs_vWsyGY*#LUUSgy3-i^%oFiFd#vHio4so z{|6KGm3|hdqyIx+ZL+U8O2jmpGG`Sr_GD;vCs6ZXK~)3*0^^)T2mr)u9YO%q9`_oL zfIAbqb?It^D)U9K;pWnNH%*BxBAixVho}}2nOK*$lGpCs*p#pdC=JyJ*ak*XG|VBD zW}V(OIJro>@~*)?rCGgqafDChmKFCyw9=OWZze~PVt2B zhY$dWQyfA7bVnUbIukv4ngH~v^c7^MC(*}V>KXP@G2I>JaH>l$0M{STBYU$Tv(m-r zU9bhTnNG}HPA6`zq67VWgSc_?CUFCEiMR=KDO}98yFflLUuB^WR{DA7DLC^rqC~GV z8O#=Y$;Puv!-&Jio1P9Yn43u_u6Ln>NK?g)>j7~C-3OP_L62&6KmZ_4a|i)|INc!x z0OAaX5CDiX9YO#g&TPOncrXpjY{4`|aRuQK!D0nr2C?Yb zTA%{OFA8>w(zAfQYjA4u`+}IJ^psk(>BT<@w!c;B{u;VJRcwt>llt3~p3L-m2}M{t z!2z?EGRwiCP|k7u3joBq4k3WGp9?5U40T+b0@_ONinL{a~Yl)13gU{jB=@tNiwun*WOVsZxDHQ#`8yZ#;?mC63-tLH{U|c%$$AW z29^uvFH-{Z9RO{e@q~e8lhQC7hH<_v(LRQ$&G&&R{Aes4G@i?e=W(jXl1j!i<_Cy} z=I+kqP4#x&&z_|@9J^R$O2NzpvuB>neLuG_GVnMU)cXOCkzQrwi;_13<~^$Zm9G1pwj#hY$dW3mrlL z%-~}B#~?#0`X>Zn6QE;|dS$<}7sNJ%dR1ju3^9L_XI?;Pq2Djvg6U>kh)$RnfyGI; z5uD+=6#+ra+y=+)(`P{g)?2ZJ1B2 zK+(e)?XROVS{Mh`wn}?_!_FR{F_Ws0>(I&xM>8MWZY$7;s^>CcH?iF)Zv}YR4LnTp zROJttR8R8!${)pzRsJNd{uOEdUf`YzEUZ{irmt-hPH^c2w0V+u2@(1?h?rZi$|RnL znCP0{0;#$yk|8?aV_BaPQu-aEqk1H0wRO3q8YcWbgX>b5KM;kb)EW`r{E;|pE|LmL zd2zLrxubpaCj^G%UIK`=A@ldMzywT9U+hKE^q35&S^}0UKOXChVy>%Ns)p>x^tp7p z_4#yqbcy63N9qn_$-OVs`zA1y3fdCkY~g6sSG&4|SgeL8A+}VI82Rz`(meu}H|%t} z^0@gCyZ!uX>7w~Hr9(ws0$S4a1OTGq5CQ;ksY3_=#OobG0FhD5L-)^pE3A90hvZ7D z&>&Lia~HrJ!f}yZ;BJ_XaV#*i08VN#7a&@DqJVB8Vg7{?y!bR~*{-%vDgG6(AZ(ca z3#3*$04X-1Q(p@LW`8`KoO_TrZ3@-xn+p*MYeb2_;9woCDdEre23#CJ7RD*Wl z`8>oo@8F{ianUK6i{ODR{vU*!O94ZzMM5~H03Uj-PtoXGZu?&6wuk7bz`}jNR=9%AIPEK4U<|t1@_F&XQc>w%j86;E;eK{jg#94hULG;&g?;(_gzi=Vya_Um)ACPeApLkT>Ab#{Y zsmhfE-KNcrAb@e;7CLc#GaaQxT|R3Y@G!2@Z2n5$ z#Ag^+e*#SF>mwMfg}jfc(JiFR_aJvP_O}B;{sZq}%l`js{u?-`73_Ypw!MPEK6OQV zv|6;V1Vb)}?e;22OxmpgK)lf*1OVbq4j}*#S386NKwRSx0$^tHHn3McDI`8jL@ipg zAHmvmp#`=ltDt}_Nzt24;FH}eJ-)dN6_znufJ3KEdLs$cz`aZi+0%}@5N;ZOnUpI} zKI4l zur_E1@`poJek;0zeZmrEeElx6>HHW$#Q(QQnFpfmbVbXIwU)PzUuc&3800sHeNtGt z7)LSmNy#pz_*z354Wm}15lMl}%T!{#$RnmLWjKb@d{&xcII~ajy7IJod*fZ1T`_EO z&60ig+(>@)xpjs#&}ZV<)}A)YNiDuH1j+PC(T{Ho_D|jHeZa7 zGHj$2x()qq#OvPb=Vli_j4{eu(zgBw!J8s)Wp*FY^bBO0(|y)%r#vxEY=eeV z9Ve#9D_T%MI|pd>`es>LI1x&5#|$=4xxAr$xLB=vGmtXjc|S$WbwrD?{9r?Zw=kqe_^tFpQp|^|v~P#soEbwV&T}q3;EN%?Sx+BrWhMK4D7Ndn zu1B~k#XzTWgMe{@HwqXKyh*?W!J7q45_|_iclPdW^u#L6%8s3!W7)bP`DopgnTc=E zV9>%WZw9%xWd!=QtG&`eZxS)w>V;Oe9 zC-urV6C!+G*hKP`@@Z*KjPiL=6VXOKtFp#~HX`dy^zEPwY!JS|G1aQRl$)}9rDd=* zVQbd(`jRH1jb&iJJ#U+BMV0R$qjoPXg`TuRe?#-D@;PJNy|l(Q?PxxNVP?Zl({vrx z>nU94*&Ov;PEWN;uAmR&n)EU*{u`q4uZ()GqKEz6QIN$5#|gh8{gez~^0fq}^}T5}spry~H;Ep@(I>wLG-SIhABy1+Z>bFA$RRpIzGDI!SjGu>5B z;qH3xd+G?@Q|EgxeJ8oX%B~rA=*+#uyKLXLjY#(qAJ(UAcSRGupPu6zD4P!uyF7w5 zAB-mY5It34f4I)~KvU9>)P+A-=X;30!y_4C2l1oCMfiP~epkqkH3U9Ff2~$NPVYE^ z`b2%SN9k?I_LIa_3-u}b>Ll=KVjLTvsf+wro$v8F-xKuJ5&A4Kj?m}mi4^wpb&0>w zl=w+vs#~WzMHNH4>e{1~XVK-yJx#ZV+nLmDjKVo;T(=W!DE3$C33f8dI0F1y6DLpE zgw`a9nXl6;bC)TO4+%0@SZnSeT>sF~v7P?m8{?&{^)0S{sMY>6!UOw7+P-^={mg#J zH$UL%C!U9rehLeM=nc(JfDBd7JS#~d$E575VvIptG2v>$G~YxdbgrezNR3zK@kATk zjZWMQ!-*N3EC{gDzAGH8Rx@v`)Z`0pUE#D#Tnm8ssvC6F=Gn@c$ z3xFzDwqLF)?Dv?U>ia%@HNpIVUXJk%b@M~un>z2Es+;G=OW9mEhvUrRZB?$#kI08p z{V{q_Ph2xu3>UT@&SGULN8OF5ZzkaxH(hvQ5iAV{=7-4CJYTCi){pryY1Or|p9poX zXDkD4*w+{%OLIUYruPxDi!IqjbmC?djx%n;V+qfLg3S-Bhc6;SF#Brgz0gFjT3s)a z*>$dJ%};AF%@3JzE$C;BK~{b%UZMQH-ypxASII(_%&|_E47F=pwR-A-z+QPh{gRaG zXbVQl;$w_T?>@7 z3G-8w%hlo0$P2@CeH%Bwp%naAm`kXW&=F=(Yl6RJQL8olyE@09sWJ8u5Kj77D5 z^Bk!}!v5G8R;BqTQfaLJovW9|`hTgKNm&1`k^Y%^IL}|`VUxbS)};SRT&<`18@*Ky z{}E07_o(Neb@Bd1AN!}JsF#IOFPuuF$Htm;H|n!(xEq(v^Z>$LGwha=#vl!F8Q=;p zj&})DfTcF`xV=drM($*y-s*#Y$E+pq0i~6rJt?R?~T$w-_oBPp^si$n28zMP=2c#P#scVh{b zui2VA0Tf#TZ1|<|FoOuT8ip`V2XNTVy}9#{ThE*Bb>_YNT&P%1nIphRFSdbUlokB! za7(W_lB~^D<^;I1b%6%q+l{&t8N@>ZD+xeckO}!;LjLs-GT(S8q?5va79!*i3rf3^ z>0{wh<`_H;PNkzY48ZOHfLEW0#KLk8J~+dS%`${{z}bi z?r!~N3;GVM?RLMFRAc%&I`PW8kPZva?ZOH zA8aQ2!dOm~$ylLHm39XO;nJdfvj-6DV|Z`S*WfM_{gdd}A0wH;LNFwJfeiiEt%Y7O zf|-M~9m5k^&0GLou^^4Gm8n*Hr1Mu}soGUNft)YJFh&BIM8;9lBS`5y=nx}hr-fv3 za}rJZ;b0nVFD?J=96olg)`aEy{Ci=J^sxbqHsb!Fm9NKNnq~ws497^+8F|D|KiPEi= zaqkbHFiLL$LtU}nx&kr7Yk@cS<6%o=5eZi6I`a{rLxKaiwd(aTGlehU?1ct!Zv{6ZKdhlaeg{B)s{BC&rGf)uC}SM|$KwCJ_{Xs7Ex>}G zhq)7yWoIY+(xb4cHmUOcBvvL#-{AVZz`PEb8EM!y&{Wl<;7=ZI$yS&LPWCfo$OO6emY0eh-0Y6{MInZ-WQdMy*q2rkp>k zm`~tTpm?@mqoD<1_65MdVAZCy7@D>TgA(I1)vD(Fy166F5=|b#vX`)JCEE?FEn~}C zx|*y?SZ1A&z#5CCnproGLg|%=wKKAn4}l`4cps*d(eFlj^tM?G!2TlM9L#+a7+3W8 zhR3+rTRs4v^vnX-zLE3a<*47%yKufB6{yPJc*x4H{Dn@e@>e(t#~9y@(9+&eBz-S4 zv}s?9v>2z;rMtqkFWa<#w`u=DCtmp{oz7V0U*g6q{}wl>{72kG<-g)4D_h|*tGgSs zl0KY#q90F}-V^4feBl$9)RE5?I81y`V`BC(OpAF>y7b;KZQQ2yZQ59v_TI*{T*ssx zaxl{36(kBiX8w!;V{EUK47Y>D$DkuP?+L*STHD|mAjA(%Wdhu-aSsfK&_Zx_0q)b7 z;O#}bV42eIf<*C#kFVcH(PDZpRV%4|a}evUuQZArHmyTdLidJza|j&FKORB?^I@i1 z?`Ncǟ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 + + + RabbitMQ.Client + + + + + Represents a TCP-addressable AMQP peer: a host name and port number. + + + Some of the constructors take, as a convenience, a System.Uri + instance representing an AMQP server address. The use of Uri + here is not standardised - Uri is simply a convenient + container for internet-address-like components. In particular, + the Uri "Scheme" property is ignored: only the "Host" and + "Port" properties are extracted. + + + + + Default Amqp ssl port. + + + + + Indicates that the default port for the protocol should be used. + + + + + Creates a new instance of the . + + Hostname. + Port number. If the port number is -1, the default port number will be used. + Ssl option. + + + + Creates a new instance of the . + + Hostname. + Port number. If the port number is -1, the default port number will be used. + + + + Construct an AmqpTcpEndpoint with "localhost" as the hostname, and using the default port. + + + + + Creates a new instance of the with the given Uri and ssl options. + + + Please see the class overview documentation for information about the Uri format in use. + + + + + Creates a new instance of the with the given Uri. + + + Please see the class overview documentation for information about the Uri format in use. + + + + + Clones the endpoint. + + A copy with the same hostname, port, and TLS settings + + + + Clones the endpoint using the provided hostname. + + Hostname to use + A copy with the provided hostname and port/TLS settings of this endpoint + + + + Retrieve or set the hostname of this . + + + + Retrieve or set the port number of this + AmqpTcpEndpoint. A port number of -1 causes the default + port number. + + + + Retrieve IProtocol of this . + + + + + Retrieve the SSL options for this AmqpTcpEndpoint. If not set, null is returned. + + + + + Construct an instance from a protocol and an address in "hostname:port" format. + + + If the address string passed in contains ":", it is split + into a hostname and a port-number part. Otherwise, the + entire string is used as the hostname, and the port-number + is set to -1 (meaning the default number for the protocol + variant specified). + Hostnames provided as IPv6 must appear in square brackets ([]). + + + + + Splits the passed-in string on ",", and passes the substrings to . + + + Accepts a string of the form "hostname:port, + hostname:port, ...", where the ":port" pieces are + optional, and returns a corresponding array of s. + + + + + Compares this instance by value (protocol, hostname, port) against another instance. + + + + + Implementation of hash code depending on protocol, hostname and port, + to line up with the implementation of . + + + + + Returns a URI-like string of the form amqp-PROTOCOL://HOSTNAME:PORTNUMBER. + + + This method is intended mainly for debugging and logging use. + + + + + Structure holding an AMQP timestamp, a posix 64-bit time_t. + + + When converting between an AmqpTimestamp and a System.DateTime, + be aware of the effect of your local timezone. In particular, + different versions of the .NET framework assume different + defaults. + + + We have chosen a signed 64-bit time_t here, since the AMQP + specification through versions 0-9 is silent on whether + timestamps are signed or unsigned. + + + + + + Construct an . + + Unix time. + + + + Unix time. + + + + + Provides a debugger-friendly display. + + + + Represents a version of the AMQP specification. + + + Vendor-specific variants of particular official specification + versions exist: this class simply represents the AMQP + specification version, and does not try to represent + information about any custom variations involved. + + + AMQP version 0-8 peers sometimes advertise themselves as + version 8-0: for this reason, this class's constructor + special-cases 8-0, rewriting it at construction time to be 0-8 instead. + + + + + + Construct an from major and minor version numbers. + + + Converts major=8 and minor=0 into major=0 and minor=8. Please see the class comment. + + + + + The AMQP specification major version number. + + + + + The AMQP specification minor version number. + + + + + Implement value-equality comparison. + + + + + Implement hashing as for value-equality. + + + + + Format appropriately for display. + + + The specification currently uses "MAJOR-MINOR" as a display format. + + + + + A pluggable authentication mechanism. + + + + + Handle one round of challenge-response. + + + + + The name of the authentication mechanism, as negotiated on the wire. + + + + + Return a new authentication mechanism implementation. + + + + Represents Basic.GetOk responses from the server. + + Basic.Get either returns an instance of this class, or null if a Basic.GetEmpty was received. + + + + + Sets the new instance's properties from the arguments passed in. + + Delivery tag for the message. + Redelivered flag for the message + The exchange this message was published to. + Routing key with which the message was published. + The number of messages pending on the queue, excluding the message being delivered. + The Basic-class content header properties for the message. + + + + + Retrieves the Basic-class content header properties for this message. + + + + + Retrieves the body of this message. + + + + + Retrieve the delivery tag for this message. See also . + + + + + Retrieve the exchange this message was published to. + + + + + Retrieve the number of messages pending on the queue, excluding the message being delivered. + + + Note that this figure is indicative, not reliable, and can + change arbitrarily as messages are added to the queue and removed by other clients. + + + + + Retrieve the redelivered flag for this message. + + + + + Retrieve the routing key with which this message was published. + + + + Wrapper for a byte[]. May appear as values read from + and written to AMQP field tables. + + + The sole reason for the existence of this class is to permit + encoding of byte[] as 'x' in AMQP field tables, an extension + to the specification that is part of the tentative JMS mapping + implemented by QPid. + + + Instances of this object may be found as values held in + IDictionary instances returned from + RabbitMQ.Client.Impl.WireFormatting.ReadTable, e.g. as part of + IBasicProperties.Headers tables. Likewise, instances may be + set as values in an IDictionary table to be encoded by + RabbitMQ.Client.Impl.WireFormatting.WriteTable. + + + When an instance of this class is encoded/decoded, the type + tag 'x' is used in the on-the-wire representation. The AMQP + standard type tag 'S' is decoded to a raw byte[], and a raw + byte[] is encoded as 'S'. Instances of System.String are + converted to a UTF-8 binary representation, and then encoded + using tag 'S'. In order to force the use of tag 'x', instances + of this class must be used. + + + + + + Creates a new instance of the with null for its Bytes property. + + + + + Creates a new instance of the . + + The wrapped byte array, as decoded or as to be encoded. + + + + The wrapped byte array, as decoded or as to be encoded. + + + + Main entry point to the RabbitMQ .NET AMQP client + API. Constructs instances. + + + A simple example of connecting to a broker: + + + IConnectionFactory factory = new ConnectionFactory(); + // + // The next six lines are optional: + factory.UserName = ConnectionFactory.DefaultUser; + factory.Password = ConnectionFactory.DefaultPass; + factory.VirtualHost = ConnectionFactory.DefaultVHost; + factory.HostName = hostName; + factory.Port = AmqpTcpEndpoint.UseDefaultPort; + // + IConnection conn = factory.CreateConnection(); + // + IModel ch = conn.CreateModel(); + // + // ... use ch's IModel methods ... + // + ch.Close(Constants.ReplySuccess, "Closing the channel"); + conn.Close(Constants.ReplySuccess, "Closing the connection"); + + + The same example, written more compactly with AMQP URIs: + + + ConnectionFactory factory = new ConnectionFactory(); + factory.Uri = "amqp://localhost"; + IConnection conn = factory.CreateConnection(); + ... + + + Please see also the API overview and tutorial in the User Guide. + + + Note that the Uri property takes a string representation of an + AMQP URI. Omitted URI parts will take default values. The + host part of the URI cannot be omitted and URIs of the form + "amqp://foo/" (note the trailling slash) also represent the + default virtual host. The latter issue means that virtual + hosts with an empty name are not addressable. + + + + Default value for the desired maximum channel number, with zero meaning unlimited (value: 0). + + PLEASE KEEP THIS MATCHING THE DOC ABOVE. + + + + Default value for connection attempt timeout, in milliseconds. + + + + + Default value for the desired maximum frame size, with zero meaning unlimited (value: 0). + + PLEASE KEEP THIS MATCHING THE DOC ABOVE. + + + + Default value for desired heartbeat interval, in seconds, with zero meaning none (value: 60). + + PLEASE KEEP THIS MATCHING THE DOC ABOVE. + + + + Default password (value: "guest"). + + PLEASE KEEP THIS MATCHING THE DOC ABOVE. + + + + Default user name (value: "guest"). + + PLEASE KEEP THIS MATCHING THE DOC ABOVE. + + + + Default virtual host (value: "/"). + + PLEASE KEEP THIS MATCHING THE DOC ABOVE. + + + + Default SASL auth mechanisms to use. + + + + + SASL auth mechanisms to use. + + + + + Set to true to enable automatic connection recovery. + + + + The host to connect to. + + + + Amount of time client will wait for before re-trying to recover connection. + + + + + Amount of time protocol handshake operations are allowed to take before + timing out. + + + + + Amount of time protocol operations (e.g. queue.declare) are allowed to take before + timing out. + + + + + Factory function for creating the + used to generate a list of endpoints for the ConnectionFactory + to try in order. + The default value creates an instance of the + using the list of endpoints passed in. The DefaultEndpointResolver shuffles the + provided list each time it is requested. + + + + + The port to connect on. + indicates the default for the protocol should be used. + + + + + Protocol used, only AMQP 0-9-1 is supported in modern versions. + + + + + Timeout setting for connection attempts (in milliseconds). + + + + + Timeout setting for socket read operations (in milliseconds). + + + + + Timeout setting for socket write operations (in milliseconds). + + + + + Ssl options setting. + + + + + Set to true to make automatic connection recovery also recover topology (exchanges, queues, bindings, etc). + + + + + Task scheduler connections created by this factory will use when + dispatching consumer operations, such as message deliveries. + + + + + Construct a fresh instance, with all fields set to their respective defaults. + + + + + Connection endpoint. + + + + + Set connection parameters using the amqp or amqps scheme. + + + + + Set connection parameters using the amqp or amqps scheme. + + + + + Dictionary of client properties to be sent to the server. + + + + + Password to use when authenticating to the server. + + + + + Maximum channel number to ask for. + + + + + Frame-max parameter to ask for (in bytes). + + + + + Heartbeat timeout to use when negotiating with the server (in seconds). + + + + + When set to true, background thread will be used for the I/O loop. + + + + + Username to use when authenticating to the server. + + + + + Virtual host to access during this connection. + + + + + Given a list of mechanism names supported by the server, select a preferred mechanism, + or null if we have none in common. + + + + + Create a connection to one of the endpoints provided by the IEndpointResolver + returned by the EndpointResolverFactory. By default the configured + hostname and port are used. + + + When the configured hostname was not reachable. + + + + + Create a connection to one of the endpoints provided by the IEndpointResolver + returned by the EndpointResolverFactory. By default the configured + hostname and port are used. + + + Application-specific connection name, will be displayed in the management UI + if RabbitMQ server supports it. This value doesn't have to be unique and cannot + be used as a connection identifier, e.g. in HTTP API requests. + This value is supposed to be human-readable. + + + When the configured hostname was not reachable. + + + + + Create a connection using a list of hostnames using the configured port. + By default each hostname is tried in a random order until a successful connection is + found or the list is exhausted using the DefaultEndpointResolver. + The selection behaviour can be overriden by configuring the EndpointResolverFactory. + + + List of hostnames to use for the initial + connection and recovery. + + Open connection + + When no hostname was reachable. + + + + + Create a connection using a list of hostnames using the configured port. + By default each endpoint is tried in a random order until a successful connection is + found or the list is exhausted. + The selection behaviour can be overriden by configuring the EndpointResolverFactory. + + + List of hostnames to use for the initial + connection and recovery. + + + Application-specific connection name, will be displayed in the management UI + if RabbitMQ server supports it. This value doesn't have to be unique and cannot + be used as a connection identifier, e.g. in HTTP API requests. + This value is supposed to be human-readable. + + Open connection + + When no hostname was reachable. + + + + + Create a connection using a list of endpoints. By default each endpoint will be tried + in a random order until a successful connection is found or the list is exhausted. + The selection behaviour can be overriden by configuring the EndpointResolverFactory. + + + List of endpoints to use for the initial + connection and recovery. + + Open connection + + When no hostname was reachable. + + + + + Create a connection using an IEndpointResolver. + + + The endpointResolver that returns the endpoints to use for the connection attempt. + + + Application-specific connection name, will be displayed in the management UI + if RabbitMQ server supports it. This value doesn't have to be unique and cannot + be used as a connection identifier, e.g. in HTTP API requests. + This value is supposed to be human-readable. + + Open connection + + When no hostname was reachable. + + + + + Unescape a string, protecting '+'. + + + + + Set custom socket options by providing a SocketFactory. + + + + + Creates a new instance of the . + + Specifies the addressing scheme. + New instance of a . + + + + Useful default/base implementation of . + Subclass and override in application code. + + + Note that the "Handle*" methods run in the connection's thread! + Consider using , which exposes + events that can be subscribed to consumer messages. + + + + + Creates a new instance of an . + + + + + Constructor which sets the Model property to the given value. + + Common AMQP model. + + + + Retrieve the consumer tag this consumer is registered as; to be used when discussing this consumer + with the server, for instance with . + + + + + Returns true while the consumer is registered and expecting deliveries from the broker. + + + + + If our shuts down, this property will contain a description of the reason for the + shutdown. Otherwise it will contain null. See . + + + + + Signalled when the consumer gets cancelled. + + + + + Retrieve the this consumer is associated with, + for use in acknowledging received messages, for instance. + + + + + Called when the consumer is cancelled for reasons other than by a basicCancel: + e.g. the queue has been deleted (either by this channel or by any other channel). + See for notification of consumer cancellation due to basicCancel + + Consumer tag this consumer is registered. + + + + Called upon successful deregistration of the consumer from the broker. + + Consumer tag this consumer is registered. + + + + Called upon successful registration of the consumer with the broker. + + Consumer tag this consumer is registered. + + + + Called each time a message arrives for this consumer. + + + Does nothing with the passed in information. + Note that in particular, some delivered messages may require acknowledgement via . + The implementation of this method in this class does NOT acknowledge such messages. + + + + + Called when the model shuts down. + + Common AMQP model. + Information about the reason why a particular model, session, or connection was destroyed. + + + + Default implementation - overridable in subclasses. + + This default implementation simply sets the + property to false, and takes no further action. + + + + + Convenience class providing compile-time names for standard exchange types. + + + Use the static members of this class as values for the + "exchangeType" arguments for IModel methods such as + ExchangeDeclare. The broker may be extended with additional + exchange types that do not appear in this class. + + + + + Exchange type used for AMQP direct exchanges. + + + + + Exchange type used for AMQP fanout exchanges. + + + + + Exchange type used for AMQP headers exchanges. + + + + + Exchange type used for AMQP topic exchanges. + + + + + Retrieve a collection containing all standard exchange types. + + + + + Handle one round of challenge-response. + + + + + The name of the authentication mechanism, as negotiated on the wire. + + + + + Return a new authentication mechanism implementation. + + + + + Convenience class providing compile-time names for standard headers. + + + Use the static members of this class as headers for the + arguments for Queue and Exchange declaration or Consumer creation. + The broker may be extended with additional + headers that do not appear in this class. + + + + + x-max-priority header + + + + + x-max-length header + + + + + x-max-length-bytes header + + + + + x-dead-letter-exchange header + + + + + x-dead-letter-routing-key header + + + + + x-message-ttl header + + + + + x-expires header + + + + + alternate-exchange header + + + + + x-priority header + + + + Consumer interface. Used to + receive messages from a queue by subscription. + + + See IModel.BasicConsume, IModel.BasicCancel. + + + Note that the "Handle*" methods run in the connection's + thread! Consider using QueueingBasicConsumer, which uses a + SharedQueue instance to safely pass received messages across + to user threads. + + + + + + Retrieve the this consumer is associated with, + for use in acknowledging received messages, for instance. + + + + + Signalled when the consumer gets cancelled. + + + + + Called when the consumer is cancelled for reasons other than by a basicCancel: + e.g. the queue has been deleted (either by this channel or by any other channel). + See for notification of consumer cancellation due to basicCancel + + Consumer tag this consumer is registered. + + + + Called upon successful deregistration of the consumer from the broker. + + Consumer tag this consumer is registered. + + + + Called upon successful registration of the consumer with the broker. + + Consumer tag this consumer is registered. + + + + Called each time a message arrives for this consumer. + + + Does nothing with the passed in information. + Note that in particular, some delivered messages may require acknowledgement via . + The implementation of this method in this class does NOT acknowledge such messages. + + + + + Called when the model shuts down. + + Common AMQP model. + Information about the reason why a particular model, session, or connection was destroyed. + + + Common AMQP Basic content-class headers interface, + spanning the union of the functionality offered by versions + 0-8, 0-8qpid, 0-9 and 0-9-1 of AMQP. + + + The specification code generator provides + protocol-version-specific implementations of this interface. To + obtain an implementation of this interface in a + protocol-version-neutral way, use . + + + Each property is readable, writable and clearable: a cleared + property will not be transmitted over the wire. Properties on a + fresh instance are clear by default. + + + + + + Application Id. + + + + + Intra-cluster routing identifier (cluster id is deprecated in AMQP 0-9-1). + + + + + MIME content encoding. + + + + + MIME content type. + + + + + Application correlation identifier. + + + + + Non-persistent (1) or persistent (2). + + + + + Message expiration specification. + + + + + Message header field table. Is of type . + + + + + Application message Id. + + + + + Sets to either persistent (2) or non-persistent (1). + + + + + Message priority, 0 to 9. + + + + + Destination to reply to. + + + + + Convenience property; parses property using , + and serializes it using . + Returns null if property cannot be parsed by . + + + + + Message timestamp. + + + + + Message type name. + + + + + User Id. + + + + + Clear the property. + + + + + Clear the property (cluster id is deprecated in AMQP 0-9-1). + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the Type property. + + + + + Clear the property. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present (cluster id is deprecated in AMQP 0-9-1). + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the Type property is present. + + + + + Returns true if the UserId property is present. + + + + Sets to either persistent (2) or non-persistent (1). + + + The numbers 1 and 2 for delivery mode are "magic" in that + they appear in the AMQP 0-8 and 0-9 specifications as part + of the definition of the DeliveryMode Basic-class property, + without being defined as named constants. + + + Calling this method causes to take on a value. + In order to reset to the default empty condition, call . + + + + + + Main interface to an AMQP connection. + + + + Instances of are used to create fresh + sessions/channels. The class is used to + construct instances. + Please see the documentation for ConnectionFactory for an example of usage. + Alternatively, an API tutorial can be found in the User Guide. + + + Extends the interface, so that the "using" + statement can be used to scope the lifetime of a channel when + appropriate. + + + + + + If true, will close the whole connection as soon as there are no channels open on it; + if false, manual connection closure will be required. + + + DON'T set AutoClose to true before opening the first + channel, because the connection will be immediately closed if you do! + + + + + The maximum channel number this connection supports (0 if unlimited). + Usable channel numbers range from 1 to this number, inclusive. + + + + + A copy of the client properties that has been sent to the server. + + + + + Returns null if the connection is still in a state + where it can be used, or the cause of its closure otherwise. + + + + Applications should use the ConnectionShutdown event to + avoid race conditions. The scenario to avoid is checking + , seeing it is null (meaning the + was available for use at the time of the check), and + interpreting this mistakenly as a guarantee that the + will remain usable for a time. Instead, the + operation of interest should simply be attempted: if the + is not in a usable state, an exception will be + thrown (most likely , but may + vary depending on the particular operation being attempted). + + + + + + Retrieve the endpoint this connection is connected to. + + + + + The maximum frame size this connection supports (0 if unlimited). + + + + + The current heartbeat setting for this connection (0 for disabled), in seconds. + + + + + Returns true if the connection is still in a state where it can be used. + Identical to checking if equal null. + + + + + Returns the known hosts that came back from the + broker in the connection.open-ok method at connection + startup time. Null until the connection is completely open and ready for use. + + + + + The this connection is using to communicate with its peer. + + + + + A dictionary of the server properties sent by the server while establishing the connection. + This typically includes the product name and version of the server. + + + + + Returns the list of objects that contain information + about any errors reported while closing the connection in the order they appeared + + + + + Application-specific connection name, will be displayed in the management UI + if RabbitMQ server supports it. This value doesn't have to be unique and cannot + be used as a connection identifier, e.g. in HTTP API requests. + This value is supposed to be human-readable. + + + + + Signalled when an exception occurs in a callback invoked by the connection. + + + This event is signalled when a ConnectionShutdown handler + throws an exception. If, in future, more events appear on + , then this event will be signalled whenever one + of those event handlers throws an exception, as well. + + + + + Raised when the connection is destroyed. + + + If the connection is already destroyed at the time an + event handler is added to this event, the event handler + will be fired immediately. + + + + + Abort this connection and all its channels. + + + Note that all active channels, sessions, and models will be closed if this method is called. + In comparison to normal method, will not throw + or during closing connection. + This method waits infinitely for the in-progress close operation to complete. + + + + + Abort this connection and all its channels. + + + The method behaves in the same way as , with the only + difference that the connection is closed with the given connection close code and message. + + The close code (See under "Reply Codes" in the AMQP specification) + + + A message indicating the reason for closing the connection + + + + + + Abort this connection and all its channels and wait with a + timeout for all the in-progress close operations to complete. + + + This method, behaves in a similar way as method with the + only difference that it explictly specifies the timeout given + for all the in-progress close operations to complete. + If timeout is reached and the close operations haven't finished, then socket is forced to close. + + To wait infinitely for the close operations to complete use . + + + + + + Abort this connection and all its channels and wait with a + timeout for all the in-progress close operations to complete. + + + The method behaves in the same way as , with the only + difference that the connection is closed with the given connection close code and message. + + The close code (See under "Reply Codes" in the AMQP specification). + + + A message indicating the reason for closing the connection. + + + + + + Close this connection and all its channels. + + + Note that all active channels, sessions, and models will be + closed if this method is called. It will wait for the in-progress + close operation to complete. This method will not return to the caller + until the shutdown is complete. If the connection is already closed + (or closing), then this method will throw . + It can also throw when socket was closed unexpectedly. + + + + + Close this connection and all its channels. + + + The method behaves in the same way as , with the only + difference that the connection is closed with the given connection close code and message. + + The close code (See under "Reply Codes" in the AMQP specification). + + + A message indicating the reason for closing the connection. + + + + + + Close this connection and all its channels + and wait with a timeout for all the in-progress close operations to complete. + + + Note that all active channels, sessions, and models will be + closed if this method is called. It will wait for the in-progress + close operation to complete with a timeout. If the connection is + already closed (or closing), then this method will throw . + It can also throw when socket was closed unexpectedly. + If timeout is reached and the close operations haven't finished, then socket is forced to close. + + To wait infinitely for the close operations to complete use . + + + + + + Close this connection and all its channels + and wait with a timeout for all the in-progress close operations to complete. + + + The method behaves in the same way as , with the only + difference that the connection is closed with the given connection close code and message. + + The close code (See under "Reply Codes" in the AMQP specification). + + + A message indicating the reason for closing the connection. + + + + + + Create and return a fresh channel, session, and model. + + + + + Handle incoming Connection.Blocked methods. + + + + + Handle incoming Connection.Unblocked methods. + + + + + Dictionary of client properties to be sent to the server. + + + + + Password to use when authenticating to the server. + + + + + Maximum channel number to ask for. + + + + + Frame-max parameter to ask for (in bytes). + + + + + Heartbeat setting to request (in seconds). + + + + + When set to true, background threads will be used for I/O and heartbeats. + + + + + Username to use when authenticating to the server. + + + + + Virtual host to access during this connection. + + + + + Given a list of mechanism names supported by the server, select a preferred mechanism, + or null if we have none in common. + + + + + Create a connection to the specified endpoint. + + + + + Create a connection to the specified endpoint. + + /// Application-specific connection name, will be displayed in the management UI + if RabbitMQ server supports it. This value doesn't have to be unique and cannot + be used as a connection identifier, e.g. in HTTP API requests. + This value is supposed to be human-readable. + + + + + + Connects to the first reachable hostname from the list. + + List of host names to use + + + + + Connects to the first reachable hostname from the list. + + List of host names to use + + Application-specific connection name, will be displayed in the management UI + if RabbitMQ server supports it. This value doesn't have to be unique and cannot + be used as a connection identifier, e.g. in HTTP API requests. + This value is supposed to be human-readable. + + + + + + Advanced option. + + What task scheduler should consumer dispatcher use. + + + + + Amount of time protocol handshake operations are allowed to take before + timing out. + + + + + Amount of time protocol operations (e.g. queue.declare) are allowed to take before + timing out. + + + + + A decoded AMQP content header frame. + + + + + Retrieve the AMQP class ID of this content header. + + + + + Retrieve the AMQP class name of this content header. + + + + + Return all AmqpTcpEndpoints in the order they should be tried. + + + + + A decoded AMQP method frame. + + + + AMQP methods can be RPC requests, RPC responses, exceptions + (ChannelClose, ConnectionClose), or one-way asynchronous + messages. Currently this information is not recorded in their + type or interface: it is implicit in the way the method is + used, and the way it is defined in the AMQP specification. A + future revision of the RabbitMQ .NET client library may extend + the IMethod interface to represent this information + explicitly. + + + + + + Retrieves the class ID number of this method, as defined in the AMQP specification XML. + + + + + Retrieves the method ID number of this method, as defined in the AMQP specification XML. + + + + + Retrieves the name of this method - for debugging use. + + + + + Common AMQP model, spanning the union of the + functionality offered by versions 0-8, 0-8qpid, 0-9 and 0-9-1 of AMQP. + + + Extends the interface, so that the "using" + statement can be used to scope the lifetime of a channel when appropriate. + + + + + Channel number, unique per connections. + + + + + Returns null if the session is still in a state where it can be used, + or the cause of its closure otherwise. + + + + Signalled when an unexpected message is delivered + + Under certain circumstances it is possible for a channel to receive a + message delivery which does not match any consumer which is currently + set up via basicConsume(). This will occur after the following sequence + of events: + + ctag = basicConsume(queue, consumer); // i.e. with explicit acks + // some deliveries take place but are not acked + basicCancel(ctag); + basicRecover(false); + + Since requeue is specified to be false in the basicRecover, the spec + states that the message must be redelivered to "the original recipient" + - i.e. the same channel / consumer-tag. But the consumer is no longer + active. + + In these circumstances, you can register a default consumer to handle + such deliveries. If no default consumer is registered an + InvalidOperationException will be thrown when such a delivery arrives. + + Most people will not need to use this. + + + + Returns true if the model is no longer in a state where it can be used. + + + + + Returns true if the model is still in a state where it can be used. + Identical to checking if equals null. + + + + When in confirm mode, return the sequence number of the next message to be published. + + + + + Signalled when a Basic.Ack command arrives from the broker. + + + + + Signalled when a Basic.Nack command arrives from the broker. + + + + + All messages received before this fires that haven't been ack'ed will be redelivered. + All messages received afterwards won't be. + + + Handlers for this event are invoked by the connection thread. + It is sometimes useful to allow that thread to know that a recover-ok + has been received, rather than the thread that invoked . + + + + + Signalled when a Basic.Return command arrives from the broker. + + + + + Signalled when an exception occurs in a callback invoked by the model. + + Examples of cases where this event will be signalled + include exceptions thrown in methods, or + exceptions thrown in delegates etc. + + + + + Notifies the destruction of the model. + + + If the model is already destroyed at the time an event + handler is added to this event, the event handler will be fired immediately. + + + + + Abort this session. + + + If the session is already closed (or closing), then this + method does nothing but wait for the in-progress close + operation to complete. This method will not return to the + caller until the shutdown is complete. + In comparison to normal method, will not throw + or or any other during closing model. + + + + + Abort this session. + + + The method behaves in the same way as , with the only + difference that the model is closed with the given model close code and message. + + The close code (See under "Reply Codes" in the AMQP specification) + + + A message indicating the reason for closing the model + + + + + + (Spec method) Acknowledge one or more delivered message(s). + + + + + Delete a Basic content-class consumer. + + + + Start a Basic content-class consumer. + + + + (Spec method) Retrieve an individual message, if + one is available; returns null if the server answers that + no messages are currently available. See also . + + + + Reject one or more delivered message(s). + + + + (Spec method) Publishes a message. + + + + + (Spec method) Configures QoS parameters of the Basic content-class. + + + + + (Spec method). + + + + + (Spec method). + + + + (Spec method) Reject a delivered message. + + + Close this session. + + If the session is already closed (or closing), then this + method does nothing but wait for the in-progress close + operation to complete. This method will not return to the + caller until the shutdown is complete. + + + + Close this session. + + The method behaves in the same way as Close(), with the only + difference that the model is closed with the given model + close code and message. + + The close code (See under "Reply Codes" in the AMQP specification) + + + A message indicating the reason for closing the model + + + + + + Enable publisher acknowledgements. + + + + + Construct a completely empty content header for use with the Basic content class. + + + + + (Extension method) Bind an exchange to an exchange. + + + + + Like ExchangeBind but sets nowait to true. + + + + (Spec method) Declare an exchange. + + The exchange is declared non-passive and non-internal. + The "nowait" option is not exercised. + + + + + Same as ExchangeDeclare but sets nowait to true and returns void (as there + will be no response from the server). + + + + + (Spec method) Declare an exchange. + + + The exchange is declared passive. + + + + + (Spec method) Delete an exchange. + + + + + Like ExchangeDelete but sets nowait to true. + + + + + (Extension method) Unbind an exchange from an exchange. + + + + + Like ExchangeUnbind but sets nowait to true. + + + + + (Spec method) Bind a queue to an exchange. + + + + Same as QueueBind but sets nowait parameter to true. + + + (Spec method) Declare a queue. + + + + Same as QueueDeclare but sets nowait to true and returns void (as there + will be no response from the server). + + + + Declare a queue passively. + + The queue is declared passive, non-durable, + non-exclusive, and non-autodelete, with no arguments. + The queue is declared passively; i.e. only check if it exists. + + + + + Returns the number of messages in a queue ready to be delivered + to consumers. This method assumes the queue exists. If it doesn't, + an exception will be closed with an exception. + + The name of the queue + + + + Returns the number of consumers on a queue. + This method assumes the queue exists. If it doesn't, + an exception will be closed with an exception. + + The name of the queue + + + + (Spec method) Delete a queue. + + + Returns the number of messages purged during queue deletion. + uint.MaxValue. + + + + + Same as QueueDelete but sets nowait parameter to true + and returns void (as there will be no response from the server) + + + + + (Spec method) Purge a queue of messages. + + + Returns the number of messages purged. + + + + + (Spec method) Unbind a queue from an exchange. + + + + + (Spec method) Commit this session's active TX transaction. + + + + + (Spec method) Roll back this session's active TX transaction. + + + + + (Spec method) Enable TX mode for this session. + + + + Wait until all published messages have been confirmed. + + + Waits until all messages published since the last call have + been either ack'd or nack'd by the broker. Returns whether + all the messages were ack'd (and none were nack'd). Note, + throws an exception when called on a non-Confirm channel. + + + + + Wait until all published messages have been confirmed. + + True if no nacks were received within the timeout, otherwise false. + How long to wait (at most) before returning + whether or not any nacks were returned. + + + Waits until all messages published since the last call have + been either ack'd or nack'd by the broker. Returns whether + all the messages were ack'd (and none were nack'd). Note, + throws an exception when called on a non-Confirm channel. + + + + + Wait until all published messages have been confirmed. + + True if no nacks were received within the timeout, otherwise false. + How long to wait (at most) before returning + whether or not any nacks were returned. + + True if the method returned because + the timeout elapsed, not because all messages were ack'd or at least one nack'd. + + + Waits until all messages published since the last call have + been either ack'd or nack'd by the broker. Returns whether + all the messages were ack'd (and none were nack'd). Note, + throws an exception when called on a non-Confirm channel. + + + + + Wait until all published messages have been confirmed. + + + Waits until all messages published since the last call have + been ack'd by the broker. If a nack is received, throws an + OperationInterrupedException exception immediately. + + + + + Wait until all published messages have been confirmed. + + + Waits until all messages published since the last call have + been ack'd by the broker. If a nack is received or the timeout + elapses, throws an OperationInterrupedException exception immediately. + + + + + Amount of time protocol operations (e.g. queue.declare) are allowed to take before + timing out. + + + + Start a Basic content-class consumer. + + + Start a Basic content-class consumer. + + + Start a Basic content-class consumer. + + + Start a Basic content-class consumer. + + + + (Extension method) Convenience overload of BasicPublish. + + + The publication occurs with mandatory=false and immediate=false. + + + + + (Extension method) Convenience overload of BasicPublish. + + + The publication occurs with mandatory=false + + + + + (Spec method) Convenience overload of BasicPublish. + + + + + (Spec method) Declare a queue. + + + + + (Extension method) Bind an exchange to an exchange. + + + + + (Extension method) Like exchange bind but sets nowait to true. + + + + + (Spec method) Declare an exchange. + + + + + (Extension method) Like ExchangeDeclare but sets nowait to true. + + + + + (Spec method) Unbinds an exchange. + + + + + (Spec method) Deletes an exchange. + + + + + (Extension method) Like ExchangeDelete but sets nowait to true. + + + + + (Spec method) Binds a queue. + + + + + (Spec method) Deletes a queue. + + + + + (Extension method) Like QueueDelete but sets nowait to true. + + + + + (Spec method) Unbinds a queue. + + + + + Object describing various overarching parameters + associated with a particular AMQP protocol variant. + + + + + Retrieve the protocol's API name, used for printing, + configuration properties, IDE integration, Protocols.cs etc. + + + + + Retrieve the protocol's default TCP port. + + + + + Retrieve the protocol's major version number. + + + + + Retrieve the protocol's minor version number. + + + + + Retrieve the protocol's revision (if specified). + + + + + Construct a connection from a given set of parameters, + a frame handler, and no automatic recovery. + The "insist" parameter is passed on to the AMQP connection.open method. + + + + + Construct a connection from a given set of parameters, + a frame handler, and automatic recovery settings. + + + + + Construct a connection from a given set of parameters, + a frame handler, a client-provided name, and no automatic recovery. + The "insist" parameter is passed on to the AMQP connection.open method. + + + + + Construct a connection from a given set of parameters, + a frame handler, a client-provided name, and automatic recovery settings. + + + + + Construct a protocol model atop a given session. + + + + + A implementation that + uses a to buffer incoming deliveries. + + + + This interface is provided to make creation of test doubles + for easier. + + + + + + A marker interface for entities that are recoverable (currently connection or channel). + + + + + Common AMQP Stream content-class headers interface, + spanning the union of the functionality offered by versions 0-8, 0-8qpid, 0-9 and 0-9-1 of AMQP. + + + + The specification code generator provides + protocol-version-specific implementations of this interface. To + obtain an implementation of this interface in a + protocol-version-neutral way, use IModel.CreateStreamProperties(). + + + Each property is readable, writable and clearable: a cleared + property will not be transmitted over the wire. Properties on a fresh instance are clear by default. + + + + + + MIME content encoding. + + + + + MIME content type. + + + + + Message header field table. + + + + + Message priority, 0 to 9. + + + + + Message timestamp. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Wrapper interface for standard TCP-client. Provides socket for socket frame handler class. + + Contains all methods that are currenty in use in rabbitmq client. + + + + Common interface for network (TCP/IP) connection classes. + + + + + Local port. + + + + + Remote port. + + + + + The name of the authentication mechanism, as negotiated on the wire. + + + + + Return a new authentication mechanism implementation. + + + + + Provides access to the supported implementations. + + + + + Protocol version 0-9-1 as modified by Pivotal. + + + + + Retrieve the current default protocol variant (currently AMQP_0_9_1). + + + + + Container for an exchange name, exchange type and + routing key, usable as the target address of a message to be published. + + + + The syntax used for the external representation of instances + of this class is compatible with QPid's "Reply-To" field + pseudo-URI format. The pseudo-URI format is + (exchange-type)://(exchange-name)/(routing-key), where + exchange-type is one of the permitted exchange type names (see + class ExchangeType), exchange-name must be present but may be + empty, and routing-key must be present but may be empty. + + + The syntax is as it is solely for compatibility with QPid's + existing usage of the ReplyTo field; the AMQP specifications + 0-8 and 0-9 do not define the format of the field, and do not + define any format for the triple (exchange name, exchange + type, routing key) that could be used instead. Please see also + the way class RabbitMQ.Client.MessagePatterns.SimpleRpcServer + uses the ReplyTo field. + + + + + + Regular expression used to extract the exchange-type, + exchange-name and routing-key from a string. + + + + + Creates a new instance of the . + + Exchange type. + Exchange name. + Routing key. + + + + Retrieve the exchange name. + + + + + Retrieve the exchange type string. + + + + + Retrieve the routing key. + + + + + Parse a out of the given string, + using the regex. + + + + + Reconstruct the "uri" from its constituents. + + + + + Represents Queue info. + + + + + Creates a new instance of the . + + Queue name. + Message count. + Consumer count. + + + + Consumer count. + + + + + Message count. + + + + + Queue name. + + + + + A implementation that + uses a to buffer incoming deliveries. + + + + Received messages are placed in the SharedQueue as instances + of . + + + Note that messages taken from the SharedQueue may need + acknowledging with . + + + When the consumer is closed, through BasicCancel or through + the shutdown of the underlying or , + the method is called, which causes any + Enqueue() operations, and Dequeue() operations when the queue + is empty, to throw EndOfStreamException (see the comment for ). + + + The following is a simple example of the usage of this class: + + + IModel channel = ...; + QueueingBasicConsumer consumer = new QueueingBasicConsumer(channel); + channel.BasicConsume(queueName, null, consumer); + + // At this point, messages will be being asynchronously delivered, + // and will be queueing up in consumer.Queue. + + while (true) { + try { + BasicDeliverEventArgs e = (BasicDeliverEventArgs) consumer.Queue.Dequeue(); + // ... handle the delivery ... + channel.BasicAck(e.DeliveryTag, false); + } catch (EndOfStreamException ex) { + // The consumer was cancelled, the model closed, or the + // connection went away. + break; + } + } + + + + + + Creates a fresh , + initialising the property to null + and the property to a fresh . + + + + + Creates a fresh , with + set to the argument, and set to a fresh . + + + + + Creates a fresh , + initialising the + and properties to the given values. + + + + + Retrieves the that messages arrive on. + + + + + Overrides 's implementation, + building a instance and placing it in the Queue. + + + + + Overrides 's OnCancel implementation, + extending it to call the Close() method of the . + + + + + Information about the reason why a particular model, session, or connection was destroyed. + + + The and properties should be used to determine the originator of the shutdown event. + + + + + Construct a with the given parameters and + 0 for and . + + + + + Construct a with the given parameters. + + + + + Object causing the shutdown, or null if none. + + + + + AMQP content-class ID, or 0 if none. + + + + + Returns the source of the shutdown event: either the application, the library, or the remote peer. + + + + + AMQP method ID within a content-class, or 0 if none. + + + + + One of the standardised AMQP reason codes. See RabbitMQ.Client.Framing.*.Constants. + + + + + Informative human-readable reason text. + + + + + Override ToString to be useful for debugging. + + + + + Describes the source of a shutdown event. + + + + + The shutdown event originated from the application using the RabbitMQ .NET client library. + + + + + The shutdown event originated from the RabbitMQ .NET client library itself. + + + Shutdowns with this ShutdownInitiator code may appear if, + for example, an internal error is detected by the client, + or if the server sends a syntactically invalid + frame. Another potential use is on IConnection AutoClose. + + + + + The shutdown event originated from the remote AMQP peer. + + + A valid received connection.close or channel.close event + will manifest as a shutdown with this ShutdownInitiator. + + + + + Single entry object in the shutdown report that encapsulates description + of the error which occured during shutdown. + + + + + Description provided in the error. + + + + + object that occured during shutdown, or null if unspecified. + + + + + Represents an which does the actual heavy lifting to set up an SSL connection, + using the config options in an to make things cleaner. + + + + + Upgrade a Tcp stream to an Ssl stream using the SSL options provided. + + + + + Represents a configurable SSL option, used in setting up an SSL connection. + + + + + Constructs an SslOption specifying both the server cannonical name and the client's certificate path. + + + + + Constructs an with no parameters set. + + + + + Retrieve or set the set of ssl policy errors that are deemed acceptable. + + + + + Retrieve or set the path to client certificate. + + + + + Retrieve or set the path to client certificate. + + + + + An optional client specified SSL certificate selection callback. If this is not specified, + the first valid certificate found will be used. + + + + + An optional client specified SSL certificate validation callback. If this is not specified, + the default callback will be used in conjunction with the property to + determine if the remote server certificate is valid. + + + + + Retrieve or set the X509CertificateCollection containing the client certificate. + If no collection is set, the client will attempt to load one from the specified . + + + + + Flag specifying if Ssl should indeed be used. + + + + + Retrieve or set server's Canonical Name. + This MUST match the CN on the Certificate else the SSL connection will fail. + + + + + Retrieve or set the Ssl protocol version. + + + + + Framework for constructing various types of AMQP. Basic-class application messages. + + + + + By default, new instances of BasicMessageBuilder and its subclasses will have this much initial buffer space. + + + + + Construct an instance ready for writing. + + + The is used for the initial accumulator buffer size. + + + + + Construct an instance ready for writing. + + + + + Retrieve the associated with this instance. + + + + + Retrieve this instance's writing to BodyStream. + + + If no instance exists, one is created, + pointing at the beginning of the accumulator. If one + already exists, the existing instance is returned. The + instance is not reset. + + + + + Retrieve the being used to construct the message body. + + + + + Retrieves the dictionary that will be used to construct the message header table. + It is of type . + + + + + Finish and retrieve the content body for transmission. + + + + + Returns the default MIME content type for messages this instance constructs, + or null if none is available or relevant. + + + + + Returns the default MIME content type for messages this instance constructs, + or null if none is available or relevant. + + + + + Write a single byte into the message body, without encoding or interpretation. + + + + + Write a byte array into the message body, without encoding or interpretation. + + + + + Write a section of a byte array into the message body, without encoding or interpretation. + + + + + Framework for analyzing various types of AMQP Basic-class application messages. + + + + + Construct an instance ready for reading. + + + + + Retrieve the associated with this instance. + + + + + Retrieve this instance's NetworkBinaryReader reading from . + + + If no NetworkBinaryReader instance exists, one is created, + pointing at the beginning of the body. If one already + exists, the existing instance is returned. The instance is + not reset. + + + + + Retrieve the message body, as a byte array. + + + + + Retrieve the being used to read from the message body. + + + + + Retrieves the content header properties of the message being read. Is of type . + + + + + Read a single byte from the body stream, without encoding or interpretation. + Returns -1 for end-of-stream. + + + + + Read bytes from the body stream into a section of + an existing byte array, without encoding or + interpretation. Returns the number of bytes read from the + body and written into the target array, which may be less + than the number requested if the end-of-stream is reached. + + + + + Constructs AMQP Basic-class messages binary-compatible with QPid's "BytesMessage" wire encoding. + + + + + MIME type associated with QPid BytesMessages. + + + + + Construct an instance for writing. See . + + + + + Construct an instance for writing. See . + + + + + Write a section of a byte array into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Write a array into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes an value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Returns the default MIME content type for messages this instance constructs, + or null if none is available or relevant. + + + + + Analyzes AMQP Basic-class messages binary-compatible with QPid's "BytesMessage" wire encoding. + + + + + MIME type associated with QPid BytesMessages. + + + + + Construct an instance for reading. See . + + + + + Reads a given number ("count") of bytes from the message body, + placing them into "target", starting at "offset". + + + + + Reads a from the message body. + + + + + Reads a given number of bytes from the message body. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Reads an from the message body. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Internal support class for use in reading and + writing information binary-compatible with QPid's "BytesMessage" wire encoding. + + + + + Interface for constructing messages binary-compatible with QPid's "BytesMessage" wire encoding. + + + + + Write a section of a byte array into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Write a array into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes an value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Analyzes messages binary-compatible with QPid's "BytesMessage" wire encoding. + + + + + Reads a given number ("count") of bytes from the message body, + placing them into "target", starting at "offset". + + + + + Reads a from the message body. + + + + + Reads a given number of bytes from the message body. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Reads an from the message body. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Interface for constructing messages binary-compatible with QPid's "MapMessage" wire encoding. + + + + + Retrieves the dictionary that will be written into the body of the message. + + + + + Analyzes messages binary-compatible with QPid's "MapMessage" wire encoding. + + + + + Parses the message body into an instance. + + + + + Interface for constructing application messages. + + + Subinterfaces provide specialized data-writing methods. This + base interface deals with the lowest common denominator: + bytes, with no special encodings for higher-level objects. + + + + + Retrieve the being used to construct the message body. + + + + + Retrieves the dictionary that will be used to construct the message header table. + It is of type . + + + + + Finish and retrieve the content body for transmission. + + + + + Finish and retrieve the content header for transmission. + + + + + Returns the default MIME content type for messages this instance constructs, + or null if none is available or relevant. + + + + + Write a single byte into the message body, without encoding or interpretation. + + + + + Write a byte array into the message body, without encoding or interpretation. + + + + + Write a section of a byte array into the message body, without encoding or interpretation. + + + + + Interface for analyzing application messages. + + + Subinterfaces provide specialized data-reading methods. This + base interface deals with the lowest common denominator: + bytes, with no special encodings for higher-level objects. + + + + + Retrieve the message body, as a byte array. + + + + + Retrieve the being used to read from the message body. + + + + + Retrieves the content header properties of the message being read. Is of type . + + + + + Read a single byte from the body stream, without encoding or interpretation. + Returns -1 for end-of-stream. + + + + + Read bytes from the body stream into a section of + an existing byte array, without encoding or + interpretation. Returns the number of bytes read from the + body and written into the target array, which may be less + than the number requested if the end-of-stream is reached. + + + + + Interface for constructing messages binary-compatible with QPid's "StreamMessage" wire encoding. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a section of a byte array into the message body being assembled. + + + + + Writes a array into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes an value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes an value into the message body being assembled. + + + The only permitted types are bool, int, short, byte, char, + long, float, double, byte[] and string. + + + + + Writes objects using WriteObject(), one after the other. No length indicator is written. + See also . + + + + + Writes a value into the message body being assembled. + + + + + Writes a string value into the message body being assembled. + + + + + Analyzes messages binary-compatible with QPid's "StreamMessage" wire encoding. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Reads a array from the message body. + The body contains information about the size of the array to read. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Reads an from the message body. + + + + + Reads a from the message body. + + + + + Reads an from the message body. + + + + + Reads array from the message body until the end-of-stream is reached. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Constructs AMQP Basic-class messages binary-compatible with QPid's "MapMessage" wire encoding. + + + + + MIME type associated with QPid MapMessages. + + + + + Construct an instance for writing. See . + + + + + Construct an instance for writing. See . + + + + + Retrieves the dictionary that will be written into the body of the message. + + + + + Finish and retrieve the content body for transmission. + + + Calling this message clears Body to null. Subsequent calls will fault. + + + + + Returns the default MIME content type for messages this instance constructs, + or null if none is available or relevant. + + + + + Analyzes AMQP Basic-class messages binary-compatible with QPid's "MapMessage" wire encoding. + + + + + MIME type associated with QPid MapMessages. + + + + + Construct an instance for reading. See . + + + + + Parses the message body into an instance. + + . + + + + Internal support class for use in reading and + writing information binary-compatible with QPid's "MapMessage" wire encoding. + + + + + + Utility class for extracting typed values from strings. + + + + + Creates the protocol violation exception. + + Type of the target. + The source. + Instance of the . + + + + Attempt to parse a string representation of a . + + + + + + Attempt to parse a string representation of a . + + + + + + Attempt to parse a string representation of a . + + + + + + Attempt to parse a string representation of a . + + + + + + Attempt to parse a string representation of an . + + + + + + Attempt to parse a string representation of a . + + + + + + Attempt to parse a string representation of a . + + + + + + Constructs AMQP Basic-class messages binary-compatible with QPid's "StreamMessage" wire encoding. + + + + + MIME type associated with QPid StreamMessages. + + + + + Construct an instance for writing. See . + + + + + Construct an instance for writing. See . + + + + + Returns the default MIME content type for messages this instance constructs, + or null if none is available or relevant. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a section of a byte array into the message body being assembled. + + + + + Writes a array into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes an value into the message body being assembled. + + + + + Writes a value into the message body being assembled. + + + + + Writes an value into the message body being assembled. + + + The only permitted types are bool, int, short, byte, char, + long, float, double, byte[] and string. + + + + + Writes objects using WriteObject(), one after the other. No length indicator is written. + See also . + + + + + Writes a value into the message body being assembled. + + + + + Writes a string value into the message body being assembled. + + + + + Analyzes AMQP Basic-class messages binary-compatible with QPid's "StreamMessage" wire encoding. + + + + + MIME type associated with QPid StreamMessages. + + + + + Construct an instance for reading. See . + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Reads a array from the message body. + The body contains information about the size of the array to read. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Reads an from the message body. + + + + + Reads a from the message body. + + + + + Reads an from the message body. + + + + + Reads array from the message body until the end-of-stream is reached. + + + + + Reads a from the message body. + + + + + Reads a from the message body. + + + + + Tags used in parsing and generating StreamWireFormatting message bodies. + + + + + Internal support class for use in reading and + writing information binary-compatible with QPid's "StreamMessage" wire encoding. + + + + + + + + + + + + + + Contains all the information about a message acknowledged + from an AMQP broker within the Basic content-class. + + + The sequence number of the acknowledged message, or + the closed upper bound of acknowledged messages if multiple + is true. + + + Whether this acknoledgement applies to one message + or multiple messages. + + + Contains all the information about a message delivered + from an AMQP broker within the Basic content-class. + + + Default constructor. + + + Constructor that fills the event's properties from + its arguments. + + + The content header of the message. + + + The message body. + + + The consumer tag of the consumer that the message + was delivered to. + + + The delivery tag for this delivery. See + IModel.BasicAck. + + + The exchange the message was originally published + to. + + + The AMQP "redelivered" flag. + + + The routing key used when the message was + originally published. + + + Contains all the information about a message nack'd + from an AMQP broker within the Basic content-class. + + + The sequence number of the nack'd message, or the + closed upper bound of nack'd messages if multiple is + true. + + + Whether this nack applies to one message or + multiple messages. + + + Ignore + Clients should ignore this field. + + + Contains all the information about a message returned + from an AMQP broker within the Basic content-class. + + + The content header of the message. + + + The message body. + + + The exchange the returned message was originally + published to. + + + The AMQP reason code for the return. See + RabbitMQ.Client.Framing.*.Constants. + + + Human-readable text from the broker describing the + reason for the return. + + + The routing key used when the message was + originally published. + + + Wrap an exception thrown by a callback. + + + Access helpful information about the context in + which the wrapped exception was thrown. + + + Access the wrapped exception. + + + Describes an exception that was thrown during the + library's invocation of an application-supplied callback + handler. + + + When an exception is thrown from a callback registered with + part of the RabbitMQ .NET client library, it is caught, + packaged into a CallbackExceptionEventArgs, and passed through + the appropriate IModel's or IConnection's CallbackException + event handlers. If an exception is thrown in a + CallbackException handler, it is silently swallowed, as + CallbackException is the last chance to handle these kinds of + exception. + + + Code constructing CallbackExceptionEventArgs instances will + usually place helpful information about the context of the + call in the IDictionary available through the Detail property. + + + + + + Event relating to connection being blocked. + + + + + Access the reason why connection is blocked. + + + + Event relating to a successful consumer registration + or cancellation. + + + Construct an event containing the consumer-tag of + the consumer the event relates to. + + + Access the consumer-tag of the consumer the event + relates to. + + + + Initializes a new instance of the class. + + The tag before. + The tag after. + + + + Gets the tag before. + + + + + Gets the tag after. + + + + Experimental class exposing an IBasicConsumer's + methods as separate events. + + + Constructor which sets the Model property to the + given value. + + + Event fired on HandleBasicDeliver. + + + Event fired on HandleBasicConsumeOk. + + + Event fired on HandleModelShutdown. + + + Event fired on HandleBasicCancelOk. + + + Fires the Unregistered event. + + + Fires the Registered event. + + + Fires the Received event. + + + Fires the Shutdown event. + + + + Event relating to flow control. + + + + + Access the flow control setting. + + + + + Initializes a new instance of the class. + + The name before. + The name after. + + + + Gets the name before. + + + + + Gets the name after. + + + + + Describes an exception that was thrown during + automatic connection recovery performed by the library. + + + + Thrown when the application tries to make use of a + session or connection that has already been shut + down. + + + Construct an instance containing the given + shutdown reason. + + + Thrown when the cause is an + authentication failure. + + + Thrown when no connection could be opened during a + ConnectionFactory.CreateConnection attempt. + + + Construct a BrokerUnreachableException. The inner exception is associated + with only one connection attempt. + + + Thrown when a SessionManager cannot allocate a new + channel number, or the requested channel number is already in + use. + + + + Indicates that there are no more free channels. + + + + + Indicates that the specified channel is in use + + The requested channel number + + + Retrieves the channel number concerned; will + return -1 in the case where "no more free channels" is + being signalled, or a non-negative integer when "channel is + in use" is being signalled. + + + Thrown when a connection to the broker fails + + + + Thrown when a session is destroyed during an RPC call to a + broker. For example, if a TCP connection dropping causes the + destruction of a session in the middle of a QueueDeclare + operation, an OperationInterruptedException will be thrown to + the caller of IModel.QueueDeclare. + + + + Construct an OperationInterruptedException with + the passed-in explanation, if any. + + + Construct an OperationInterruptedException with + the passed-in explanation and prefix, if any. + + + Retrieves the explanation for the shutdown. May + return null if no explanation is available. + + + Thrown to indicate that the peer didn't understand + the packet received from the client. Peer sent default message + describing protocol version it is using and transport parameters. + + + The peer's {'A','M','Q','P',txHi,txLo,major,minor} packet is + decoded into instances of this class. + + + + Fills the new instance's properties with the values passed in. + + + The peer's AMQP specification major version. + + + The peer's AMQP specification minor version. + + + The peer's high transport byte. + + + The peer's low transport byte. + + + Thrown when the likely cause is an + authentication failure. + + + Thrown to indicate that the peer does not support the + wire protocol version we requested immediately after opening + the TCP socket. + + + Fills the new instance's properties with the values passed in. + + + The client's AMQP specification major version. + + + The client's AMQP specification minor version. + + + The peer's AMQP specification major version. + + + The peer's AMQP specification minor version. + + + + Thrown when the model receives an RPC reply that it wasn't expecting. + + + + The unexpected reply method. + + + + Thrown when the model receives an RPC request it cannot satisfy. + + + + The name of the RPC request that could not be sent. + + + Thrown when the model cannot transmit a method field + because the version of the protocol the model is implementing + does not contain a definition for the field in + question. + + + The name of the unsupported field. + + + The name of the method involved. + + + Thrown when the wire-formatting code cannot encode a + particular .NET value to AMQP protocol format. + + + Construct a WireFormattingException with no + particular offender (i.e. null) + + + Construct a WireFormattingException with the given + offender + + + Object which this exception is complaining about; + may be null if no particular offender exists + + + API-side invocation of connection abort. + + + API-side invocation of connection abort. + + + API-side invocation of connection abort with timeout. + + + API-side invocation of connection abort with timeout. + + + API-side invocation of connection.close. + + + API-side invocation of connection.close. + + + API-side invocation of connection.close with timeout. + + + API-side invocation of connection.close with timeout. + + + Heartbeat frame for transmission. Reusable across connections. + + + Another overload of a Protocol property, useful + for exposing a tighter type. + + + Explicit implementation of IConnection.Protocol. + + + Try to close connection in a graceful way + + + Shutdown reason contains code and text assigned when closing the connection, + as well as the information about what initiated the close + + + Abort flag, if true, signals to close the ongoing connection immediately + and do not report any errors if it was already closed. + + + Timeout determines how much time internal close operations should be given + to complete. Negative or Timeout.Infinite value mean infinity. + + + + + + Loop only used while quiescing. Use only to cleanly close connection + + + + + We need to close the socket, otherwise attempting to unload the domain + could cause a CannotUnloadAppDomainException + + + + Broadcasts notification of the final shutdown of the connection. + + + + Sets the channel named in the SoftProtocolException into + "quiescing mode", where we issue a channel.close and + ignore everything except for subsequent channel.close + messages and the channel.close-ok reply that should + eventually arrive. + + + + Since a well-behaved peer will not wait indefinitely before + issuing the close-ok, we don't bother with a timeout here; + compare this to the case of a connection.close-ok, where a + timeout is necessary. + + + We need to send the close method and politely wait for a + reply before marking the channel as available for reuse. + + + As soon as SoftProtocolException is detected, we should stop + servicing ordinary application work, and should concentrate + on bringing down the channel as quickly and gracefully as + possible. The way this is done, as per the close-protocol, + is to signal closure up the stack *before* sending the + channel.close, by invoking ISession.Close. Once the upper + layers have been signalled, we are free to do what we need + to do to clean up and shut down the channel. + + + + + + May be called more than once. Should therefore be idempotent. + + + + API-side invocation of connection abort. + + + API-side invocation of connection abort. + + + API-side invocation of connection abort with timeout. + + + API-side invocation of connection abort with timeout. + + + API-side invocation of connection.close. + + + API-side invocation of connection.close. + + + API-side invocation of connection.close with timeout. + + + API-side invocation of connection.close with timeout. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Autogenerated type. Private implementation class - do not use directly. + + + Protocol major version (= 0) + + + Protocol minor version (= 9) + + + Protocol revision (= 1) + + + Protocol API name (= :AMQP_0_9_1) + + + Default TCP port (= 5672) + + + (= 1) + + + (= 2) + + + (= 3) + + + (= 8) + + + (= 4096) + + + (= 206) + + + (= 200) + + + (= 311) + + + (= 313) + + + (= 320) + + + (= 402) + + + (= 403) + + + (= 404) + + + (= 405) + + + (= 406) + + + (= 501) + + + (= 502) + + + (= 503) + + + (= 504) + + + (= 505) + + + (= 506) + + + (= 530) + + + (= 540) + + + (= 541) + + + Autogenerated type. AMQP specification method "connection.start". + + + Autogenerated type. AMQP specification method "connection.start-ok". + + + Autogenerated type. AMQP specification method "connection.secure". + + + Autogenerated type. AMQP specification method "connection.secure-ok". + + + Autogenerated type. AMQP specification method "connection.tune". + + + Autogenerated type. AMQP specification method "connection.tune-ok". + + + Autogenerated type. AMQP specification method "connection.open". + + + Autogenerated type. AMQP specification method "connection.open-ok". + + + Autogenerated type. AMQP specification method "connection.close". + + + Autogenerated type. AMQP specification method "connection.close-ok". + + + Autogenerated type. AMQP specification method "connection.blocked". + + + Autogenerated type. AMQP specification method "connection.unblocked". + + + Autogenerated type. AMQP specification method "channel.open". + + + Autogenerated type. AMQP specification method "channel.open-ok". + + + Autogenerated type. AMQP specification method "channel.flow". + + + Autogenerated type. AMQP specification method "channel.flow-ok". + + + Autogenerated type. AMQP specification method "channel.close". + + + Autogenerated type. AMQP specification method "channel.close-ok". + + + Autogenerated type. AMQP specification method "exchange.declare". + + + Autogenerated type. AMQP specification method "exchange.declare-ok". + + + Autogenerated type. AMQP specification method "exchange.delete". + + + Autogenerated type. AMQP specification method "exchange.delete-ok". + + + Autogenerated type. AMQP specification method "exchange.bind". + + + Autogenerated type. AMQP specification method "exchange.bind-ok". + + + Autogenerated type. AMQP specification method "exchange.unbind". + + + Autogenerated type. AMQP specification method "exchange.unbind-ok". + + + Autogenerated type. AMQP specification method "queue.declare". + + + Autogenerated type. AMQP specification method "queue.declare-ok". + + + Autogenerated type. AMQP specification method "queue.bind". + + + Autogenerated type. AMQP specification method "queue.bind-ok". + + + Autogenerated type. AMQP specification method "queue.unbind". + + + Autogenerated type. AMQP specification method "queue.unbind-ok". + + + Autogenerated type. AMQP specification method "queue.purge". + + + Autogenerated type. AMQP specification method "queue.purge-ok". + + + Autogenerated type. AMQP specification method "queue.delete". + + + Autogenerated type. AMQP specification method "queue.delete-ok". + + + Autogenerated type. AMQP specification method "basic.qos". + + + Autogenerated type. AMQP specification method "basic.qos-ok". + + + Autogenerated type. AMQP specification method "basic.consume". + + + Autogenerated type. AMQP specification method "basic.consume-ok". + + + Autogenerated type. AMQP specification method "basic.cancel". + + + Autogenerated type. AMQP specification method "basic.cancel-ok". + + + Autogenerated type. AMQP specification method "basic.publish". + + + Autogenerated type. AMQP specification method "basic.return". + + + Autogenerated type. AMQP specification method "basic.deliver". + + + Autogenerated type. AMQP specification method "basic.get". + + + Autogenerated type. AMQP specification method "basic.get-ok". + + + Autogenerated type. AMQP specification method "basic.get-empty". + + + Autogenerated type. AMQP specification method "basic.ack". + + + Autogenerated type. AMQP specification method "basic.reject". + + + Autogenerated type. AMQP specification method "basic.recover-async". + + + Autogenerated type. AMQP specification method "basic.recover". + + + Autogenerated type. AMQP specification method "basic.recover-ok". + + + Autogenerated type. AMQP specification method "basic.nack". + + + Autogenerated type. AMQP specification method "tx.select". + + + Autogenerated type. AMQP specification method "tx.select-ok". + + + Autogenerated type. AMQP specification method "tx.commit". + + + Autogenerated type. AMQP specification method "tx.commit-ok". + + + Autogenerated type. AMQP specification method "tx.rollback". + + + Autogenerated type. AMQP specification method "tx.rollback-ok". + + + Autogenerated type. AMQP specification method "confirm.select". + + + Autogenerated type. AMQP specification method "confirm.select-ok". + + + Autogenerated type. AMQP specification content header properties for content class "basic" + + + + Application Id. + + + + + Intra-cluster routing identifier (cluster id is deprecated in AMQP 0-9-1). + + + + + MIME content encoding. + + + + + MIME content type. + + + + + Application correlation identifier. + + + + + Non-persistent (1) or persistent (2). + + + + + Message expiration specification. + + + + + Message header field table. Is of type . + + + + + Application message Id. + + + + + Sets to either persistent (2) or non-persistent (1). + + + + + Message priority, 0 to 9. + + + + + Destination to reply to. + + + + + Convenience property; parses property using , + and serializes it using . + Returns null if property cannot be parsed by . + + + + + Message timestamp. + + + + + Message type name. + + + + + User Id. + + + + + Clear the property. + + + + + Clear the property (cluster id is deprecated in AMQP 0-9-1). + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the property. + + + + + Clear the Type property. + + + + + Clear the property. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present (cluster id is deprecated in AMQP 0-9-1). + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the property is present. + + + + + Returns true if the Type property is present. + + + + + Returns true if the UserId property is present. + + + + Sets to either persistent (2) or non-persistent (1). + + + The numbers 1 and 2 for delivery mode are "magic" in that + they appear in the AMQP 0-8 and 0-9 specifications as part + of the definition of the DeliveryMode Basic-class property, + without being defined as named constants. + + + Calling this method causes to take on a value. + In order to reset to the default empty condition, call . + + + + + Thrown when the server sends a frame along a channel + that we do not currently have a Session entry in our + SessionManager for. + + + The channel number concerned. + + + + Retrieve the AMQP class ID of this content header. + + + + + Retrieve the AMQP class name of this content header. + + + + + Fill this instance from the given byte buffer stream. + + + + A type of . + + + + Returns a random item from the list. + + Element item type + Input list + + + + Subclass of ProtocolException representing problems + requiring a connection.close. + + + Socket read timeout, in milliseconds. Zero signals "infinity". + + + Socket write timeout, in milliseconds. Zero signals "infinity". + + + Read a frame from the underlying + transport. Returns null if the read operation timed out + (see Timeout property). + + + Not part of the public API. Extension of IModel to + include utilities and connection-setup routines needed by the + implementation side. + + This interface is used by the API autogeneration + process. The AMQP XML specifications are read by the spec + compilation tool, and after the basic method interface and + implementation classes are generated, this interface is + scanned, and a spec-version-specific implementation is + autogenerated. Annotations are used on certain methods, return + types, and parameters, to customise the details of the + autogeneration process. + + + + + + Sends a Connection.TuneOk. Used during connection + initialisation. + + + Handle incoming Basic.Ack methods. Signals a + BasicAckEvent. + + + Handle incoming Basic.CancelOk methods. + + + Handle incoming Basic.ConsumeOk methods. + + + Handle incoming Basic.Deliver methods. Dispatches + to waiting consumers. + + + Handle incoming Basic.GetEmpty methods. Routes the + information to a waiting Basic.Get continuation. + + Note that the clusterId field is ignored, as in the + specification it notes that it is "deprecated pending + review". + + + + Handle incoming Basic.GetOk methods. Routes the + information to a waiting Basic.Get continuation. + + + Handle incoming Basic.Nack methods. Signals a + BasicNackEvent. + + + Handle incoming Basic.RecoverOk methods + received in reply to Basic.Recover. + + + + Handle incoming Basic.Return methods. Signals a + BasicReturnEvent. + + + Handle an incoming Channel.Close. Shuts down the + session and model. + + + Handle an incoming Channel.CloseOk. + + + Handle incoming Channel.Flow methods. Either + stops or resumes sending the methods that have content. + + + Handle an incoming Connection.Blocked. + + + Handle an incoming Connection.Close. Shuts down the + connection and all sessions and models. + + + Handle an incoming Connection.OpenOk. + + + Handle incoming Connection.Secure + methods. + + + Handle an incoming Connection.Start. Used during + connection initialisation. + + + Handle incoming Connection.Tune + methods. + + + Handle an incominga Connection.Unblocked. + + + Handle incoming Queue.DeclareOk methods. Routes the + information to a waiting Queue.DeclareOk continuation. + + + Used to send a Basic.Cancel method. The public + consume API calls this while also managing internal + datastructures. + + + Used to send a Basic.Consume method. The public + consume API calls this while also managing internal + datastructures. + + + Used to send a Basic.Get. Basic.Get is a special + case, since it can result in a Basic.GetOk or a + Basic.GetEmpty, so this level of manual control is + required. + + + Used to send a Basic.Publish method. Called by the + public publish method after potential null-reference issues + have been rectified. + + + Used to send a Channel.Close. Called during + session shutdown. + + + Used to send a Channel.CloseOk. Called during + session shutdown. + + + Used to send a Channel.FlowOk. Confirms that + Channel.Flow from the broker was processed. + + + Used to send a Channel.Open. Called during session + initialisation. + + + Used to send a Confirm.Select method. The public + confirm API calls this while also managing internal + datastructures. + + + Used to send a Connection.Close. Called during + connection shutdown. + + + Used to send a Connection.CloseOk. Called during + connection shutdown. + + + Used to send a Connection.Open. Called during + connection startup. + + + Used to send a Connection.SecureOk. Again, this is + special, like Basic.Get. + + + Used to send a Connection.StartOk. This is + special, like Basic.Get. + + + Used to send a Exchange.Bind method. Called by the + public bind method. + + + + Used to send a Exchange.Declare method. Called by the + public declare method. + + + + Used to send a Exchange.Delete method. Called by the + public delete method. + + + + Used to send a Exchange.Unbind method. Called by the + public unbind method. + + + + Used to send a Queue.Bind method. Called by the + public bind method. + + + Used to send a Queue.Declare method. Called by the + public declare method. + + + Used to send a Queue.Delete method. Called by the + public delete method. + + + Used to send a Queue.Purge method. Called by the + public purge method. + + + Essential information from an incoming Connection.Tune + method. + + + The peer's suggested channel-max parameter. + + + The peer's suggested frame-max parameter. + + + The peer's suggested heartbeat parameter. + + + + Gets the channel number. + + + + + Gets the close reason. + + + + + Single recipient - no need for multiple handlers to be informed of arriving commands. + + + + + Gets the connection. + + + + + Gets a value indicating whether this session is open. + + + + + Multicast session shutdown event. + + + + Small ISession implementation used only for channel 0. + + + Set channel 0 as quiescing + + Method should be idempotent. Cannot use base.Close + method call because that would prevent us from + sending/receiving Close/CloseOk commands + + + + Thrown when frame parsing code detects an error in the + wire-protocol encoding of a frame. + + For example, potential MalformedFrameException conditions + include frames too short, frames missing their end marker, and + invalid protocol negotiation headers. + + + + + Retrieves the class ID number of this method, as defined in the AMQP specification XML. + + + + + Retrieves the method ID number of this method, as defined in the AMQP specification XML. + + + + + Retrieves the name of this method - for debugging use. + + + + Only used to kick-start a connection open + sequence. See + + + Broadcasts notification of the final shutdown of the model. + + + Do not call anywhere other than at the end of OnSessionShutdown. + + + Must not be called when m_closeReason == null, because + otherwise there's a window when a new continuation could be + being enqueued at the same time as we're broadcasting the + shutdown event. See the definition of Enqueue() above. + + + + + Handle incoming Connection.Tune + methods. + + + Instances of subclasses of subclasses + HardProtocolException and SoftProtocolException are thrown in + situations when we detect a problem with the connection-, + channel- or wire-level parts of the AMQP protocol. + + + Retrieve the reply code to use in a + connection/channel close method. + + + Retrieve the shutdown details to use in a + connection/channel close method. Defaults to using + ShutdownInitiator.Library, and this.ReplyCode and + this.Message as the reply code and text, + respectively. + + + Small ISession implementation used during channel quiescing. + + + Manages a queue of waiting AMQP RPC requests. + + + Currently, pipelining of requests is forbidden by this + implementation. The AMQP 0-8 and 0-9 specifications themselves + forbid pipelining, but only by the skin of their teeth and + under a somewhat generous reading. + + + + + Enqueue a continuation, marking a pending RPC. + + + Continuations are retrieved in FIFO order by calling Next(). + + + In the current implementation, only one continuation can + be queued up at once. Calls to Enqueue() when a + continuation is already enqueued will result in + NotSupportedException being thrown. + + + + + Interrupt all waiting continuations. + + + There's just the one potential waiter in the current + implementation. + + + + + Retrieve the next waiting continuation. + + + It is an error to call this method when there are no + waiting continuations. In the current implementation, if + this happens, null will be returned (which will usually + result in an immediate NullPointerException in the + caller). Correct code will always arrange for a + continuation to have been Enqueue()d before calling this + method. + + + + + Normal ISession implementation used during normal channel operation. + + + Called from CheckAutoClose, in a separate thread, + when we decide to close the connection. + + + If m_autoClose and there are no active sessions + remaining, Close()s the connection with reason code + 200. + + + Replace an active session slot with a new ISession + implementation. Used during channel quiescing. + + Make sure you pass in a channelNumber that's currently in + use, as if the slot is unused, you'll get a null pointer + exception. + + + + Subclass of ProtocolException representing problems + requiring a channel.close. + + + Thrown when our peer sends a frame that contains + illegal values for one or more fields. + + + + Thrown when the connection receives a frame that it wasn't expecting. + + + + + Thrown when the protocol handlers detect an unknown class + number or method number. + + + + The AMQP content-class ID. + + + The AMQP method ID within the content-class, or 0 if none. + + + Reads an AMQP "table" definition from the reader. + + Supports the AMQP 0-8/0-9 standard entry types S, I, D, T + and F, as well as the QPid-0-8 specific b, d, f, l, s, t, + x and V types and the AMQP 0-9-1 A type. + + A . + + + Writes an AMQP "table" to the writer. + + + In this method, we assume that the stream that backs our + NetworkBinaryWriter is a positionable stream - which it is + currently (see Frame.m_accumulator, Frame.GetWriter and + Command.Transmit). + + + Supports the AMQP 0-8/0-9 standard entry types S, I, D, T + and F, as well as the QPid-0-8 specific b, d, f, l, s, t + x and V types and the AMQP 0-9-1 A type. + + + + + Writes an AMQP "table" to the writer. + + + In this method, we assume that the stream that backs our + NetworkBinaryWriter is a positionable stream - which it is + currently (see Frame.m_accumulator, Frame.GetWriter and + Command.Transmit). + + + Supports the AMQP 0-8/0-9 standard entry types S, I, D, T + and F, as well as the QPid-0-8 specific b, d, f, l, s, t + x and V types and the AMQP 0-9-1 A type. + + + + + Base class for attributes for controlling the API + autogeneration process. + + + The specification namespace (i.e. version) that + this attribute applies to, or null for all specification + versions. + + + Causes the API generator to ignore the attributed method. + + Mostly used to declare convenience overloads of + various AMQP methods in the IModel interface. Also used + to omit an autogenerated implementation of a method which + is not required for one protocol version. The API + autogeneration process should of course not attempt to produce + an implementation of the convenience methods, as they will be + implemented by hand with sensible defaults, delegating to the + autogenerated variant of the method concerned. + + + Causes the API generator to generate asynchronous + receive code for the attributed method. + + + Causes the API generator to generate + exception-throwing code for, instead of simply ignoring, the + attributed method. + + + + + Informs the API generator which AMQP method field to + use for either a parameter in a request, or for a simple result + in a reply. + + + Informs the API generator which AMQP method to use for + either a request (if applied to an IModel method) or a reply + (if applied to an IModel method result). + + + This attribute, if placed on a parameter in an IModel + method, causes it to be interpreted as a "nowait" parameter for + the purposes of autogenerated RPC reply continuation management + and control. + + + This attribute, if placed on a method in IModel, + causes the method to be interpreted as a factory method + producing a protocol-specific implementation of a common + content header interface. + + + This attribute, if placed on a parameter in a + content-carrying IModel method, causes it to be sent as part of + the content header frame. + + + This attribute, if placed on a parameter in a + content-carrying IModel method, causes it to be sent as part of + the content body frame. + + + This attribute, placed on an IModel method, causes + what would normally be an RPC, sent with ModelRpc, to be sent + as if it were oneway, with ModelSend. The assumption that this + is for a custom continuation (e.g. for BasicConsume/BasicCancel + etc.) + + + + Simple wrapper around TcpClient. + + + + Manages a subscription to a queue. + + + This interface is provided to make creation of test doubles + for easier. + + + + + Implements a simple RPC client. + + + This class sends requests that can be processed by remote + SimpleRpcServer instances. + + + The basic pattern for accessing a remote service is to + determine the exchange name and routing key needed for + submissions of service requests, and to construct a + SimpleRpcClient instance using that address. Once constructed, + the various Call() and Cast() overloads can be used to send + requests and receive the corresponding replies. + + + string queueName = "ServiceRequestQueue"; // See also Subscription ctors + using (IConnection conn = new ConnectionFactory() + .CreateConnection(serverAddress)) { + using (IModel ch = conn.CreateModel()) { + SimpleRpcClient client = + new SimpleRpcClient(ch, queueName); + client.TimeoutMilliseconds = 5000; // optional + + /// ... make use of the various Call() overloads + } + } + + + Instances of this class declare a queue, so it is the user's + responsibility to ensure that the exchange concerned exists + (using IModel.ExchangeDeclare) before invoking Call() or + Cast(). + + + This class implements only a few basic RPC message formats - + to extend it with support for more formats, either subclass, + or transcode the messages before transmission using the + built-in byte[] format. + + + + + + Construct an instance with no configured + Address. The Address property must be set before Call() or + Cast() are called. + + + Construct an instance that will deliver to the + default exchange (""), with routing key equal to the passed + in queueName, thereby delivering directly to a named queue + on the AMQP server. + + + Construct an instance that will deliver to the + named and typed exchange, with the given routing + key. + + + Construct an instance that will deliver to the + given address. + + + This event is fired whenever Call() detects the + disconnection of the underlying Subscription while waiting + for a reply from the service. + + See also OnDisconnected(). Note that the sending of a + request may result in OperationInterruptedException before + the request is even sent. + + + + This event is fired whenever Call() decides that a + timeout has occurred while waiting for a reply from the + service. + + See also OnTimedOut(). + + + + Retrieve or modify the address that will be used + for the next Call() or Cast(). + + This address represents the service, i.e. the destination + service requests should be published to. It can be changed + at any time before a Call() or Cast() request is sent - + the value at the time of the call is used by Call() and + Cast(). + + + + Retrieve the IModel this instance uses to communicate. + + + Retrieve the Subscription that is used to receive + RPC replies corresponding to Call() RPC requests. May be + null. + + + Upon construction, this property will be null. It is + initialised by the protected virtual method + EnsureSubscription upon the first call to Call(). Calls to + Cast() do not initialise the subscription, since no + replies are expected or possible when using Cast(). + + + + + Retrieve or modify the timeout (in milliseconds) + that will be used for the next Call(). + + + This property defaults to + System.Threading.Timeout.Infinite (i.e. -1). If it is set + to any other value, Call() will only wait for the + specified amount of time before returning indicating a + timeout. + + + See also TimedOut event and OnTimedOut(). + + + + + Sends a "jms/stream-message"-encoded RPC request, + and expects an RPC reply in the same format. + + + The arguments passed in must be of types that are + representable as JMS StreamMessage values, and so must the + results returned from the service in its reply message. + + + Calls OnTimedOut() and OnDisconnected() when a timeout or + disconnection, respectively, is detected when waiting for + our reply. + + + Returns null if the request timed out or if we were + disconnected before a reply arrived. + + + The reply message, if any, is acknowledged to the AMQP + server via Subscription.Ack(). + + + + + + + Sends a simple byte[] message, without any custom + headers or properties. + + + Delegates directly to Call(IBasicProperties, byte[]), and + discards the properties of the received reply, returning + only the body of the reply. + + + Calls OnTimedOut() and OnDisconnected() when a timeout or + disconnection, respectively, is detected when waiting for + our reply. + + + Returns null if the request timed out or if we were + disconnected before a reply arrived. + + + The reply message, if any, is acknowledged to the AMQP + server via Subscription.Ack(). + + + + + Sends a byte[] message and IBasicProperties + header, returning both the body and headers of the received + reply. + + + Sets the "replyProperties" outbound parameter to the + properties of the received reply, and returns the byte[] + body of the reply. + + + Calls OnTimedOut() and OnDisconnected() when a timeout or + disconnection, respectively, is detected when waiting for + our reply. + + + Both sets "replyProperties" to null and returns null when + either the request timed out or we were disconnected + before a reply arrived. + + + The reply message, if any, is acknowledged to the AMQP + server via Subscription.Ack(). + + + + + Sends a byte[]/IBasicProperties RPC request, + returning full information about the delivered reply as a + BasicDeliverEventArgs. + + + This is the most general/lowest-level Call()-style method + on SimpleRpcClient. It sets CorrelationId and ReplyTo on + the request message's headers before transmitting the + request to the service via the AMQP server. If the reply's + CorrelationId does not match the request's CorrelationId, + ProtocolViolationException will be thrown. + + + Calls OnTimedOut() and OnDisconnected() when a timeout or + disconnection, respectively, is detected when waiting for + our reply. + + + Returns null if the request timed out or if we were + disconnected before a reply arrived. + + + The reply message, if any, is acknowledged to the AMQP + server via Subscription.Ack(). + + + + + + Sends an asynchronous/one-way message to the + service. + + + Close the reply subscription associated with this instance, if any. + + Simply delegates to calling Subscription.Close(). Clears + the Subscription property, so that subsequent Call()s, if + any, will re-initialize it to a fresh Subscription + instance. + + + + Signals that the Subscription we use for receiving + our RPC replies was disconnected while we were + waiting. + + Fires the Disconnected event. + + + + Signals that the configured timeout fired while + waiting for an RPC reply. + + Fires the TimedOut event. + + + + Implement the IDisposable interface, permitting + SimpleRpcClient instances to be used in using + statements. + + + Should initialise m_subscription to be non-null + and usable for fetching RPC replies from the service + through the AMQP server. + + + Retrieves the reply for the request with the given + correlation ID from our internal Subscription. + + Currently requires replies to arrive in the same order as + the requests were sent out. Subclasses may override this + to provide more sophisticated behaviour. + + + + Implements a simple RPC service, responding to + requests received via a Subscription. + + + This class interprets requests such as those sent by instances + of SimpleRpcClient. + + + The basic pattern for implementing a service is to subclass + SimpleRpcServer, overriding HandleCall and HandleCast as + appropriate, and then to create a Subscription object for + receiving requests from clients, and start an instance of the + SimpleRpcServer subclass with the Subscription. + + + string queueName = "ServiceRequestQueue"; // See also Subscription ctors + using (IConnection conn = new ConnectionFactory() + .CreateConnection(serverAddress)) { + using (IModel ch = conn.CreateModel()) { + Subscription sub = new Subscription(ch, queueName); + new MySimpleRpcServerSubclass(sub).MainLoop(); + } + } + + + Note that this class itself does not declare any resources + (exchanges, queues or bindings). The Subscription we use for + receiving RPC requests should have already declared all the + resources we need. See the Subscription constructors and the + Subscription.Bind method. + + + If you are implementing a service that responds to + "jms/stream-message"-formatted requests (as implemented by + RabbitMQ.Client.Content.IStreamMessageReader), override + HandleStreamMessageCall. Otherwise, override HandleSimpleCall + or HandleCall as appropriate. Asynchronous, one-way requests + are dealt with by HandleCast etc. + + + Every time a request is successfully received and processed + within the server's MainLoop, the request message is Ack()ed + using Subscription.Ack before the next request is + retrieved. This causes the Subscription object to take care of + acknowledging receipt and processing of the request message. + + + If transactional service is enabled, via SetTransactional(), + then after every successful ProcessRequest, IModel.TxCommit is + called. Making use of transactional service has effects on all + parts of the application that share an IModel instance, + completely changing the style of interaction with the AMQP + server. For this reason, it is initially disabled, and must be + explicitly enabled with a call to SetTransactional(). Please + see the documentation for SetTransactional() for details. + + + To stop a running RPC server, call Close(). This will in turn + Close() the Subscription, which will cause MainLoop() to + return to its caller. + + + Unless overridden, ProcessRequest examines properties in the + request content header, and uses them to dispatch to one of + the Handle[...]() methods. See the documentation for + ProcessRequest and each Handle[...] method for details. + + + + + + Create, but do not start, an instance that will + receive requests via the given Subscription. + + + The instance is initially in non-transactional mode. See + SetTransactional(). + + + Call MainLoop() to start the request-processing loop. + + + + + Returns true if we are in "transactional" mode, or + false if we are not. + + + Shut down the server, causing MainLoop() to return + to its caller. + + Acts by calling Close() on the server's Subscription object. + + + + Called by ProcessRequest(), this is the most + general method that handles RPC-style requests. + + + This method should map requestProperties and body to + replyProperties and the returned byte array. + + + The default implementation checks + requestProperties.ContentType, and if it is + "jms/stream-message" (i.e. the current value of + StreamMessageBuilder.MimeType), parses it using + StreamMessageReader and delegates to + HandleStreamMessageCall before encoding and returning the + reply. If the ContentType is any other value, the request + is passed to HandleSimpleCall instead. + + + The isRedelivered flag is true when the server knows for + sure that it has tried to send this request previously + (although not necessarily to this application). It is not + a reliable indicator of previous receipt, however - the + only claim it makes is that a delivery attempt was made, + not that the attempt succeeded. Be careful if you choose + to use the isRedelivered flag. + + + + + Called by ProcessRequest(), this is the most + general method that handles asynchronous, one-way + requests. + + + The default implementation checks + requestProperties.ContentType, and if it is + "jms/stream-message" (i.e. the current value of + StreamMessageBuilder.MimeType), parses it using + StreamMessageReader and delegates to + HandleStreamMessageCall, passing in null as the + replyWriter parameter to indicate that no reply is desired + or possible. If the ContentType is any other value, the + request is passed to HandleSimpleCast instead. + + + The isRedelivered flag is true when the server knows for + sure that it has tried to send this request previously + (although not necessarily to this application). It is not + a reliable indicator of previous receipt, however - the + only claim it makes is that a delivery attempt was made, + not that the attempt succeeded. Be careful if you choose + to use the isRedelivered flag. + + + + + Called by the default HandleCall() implementation + as a fallback. + + If the MIME ContentType of the request did not match any + of the types specially recognised + (e.g. "jms/stream-message"), this method is called instead + with the raw bytes of the request. It should fill in + replyProperties (or set it to null) and return a byte + array to send back to the remote caller as a reply + message. + + + + Called by the default HandleCast() implementation + as a fallback. + + If the MIME ContentType of the request did not match any + of the types specially recognised + (e.g. "jms/stream-message"), this method is called instead + with the raw bytes of the request. + + + + Called by HandleCall and HandleCast when a + "jms/stream-message" request is received. + + + The args array contains the values decoded by HandleCall + or HandleCast. + + + The replyWriter parameter will be null if we were called + from HandleCast, in which case a reply is not expected or + possible, or non-null if we were called from + HandleCall. Use the methods of replyWriter in this case to + assemble your reply, which will be sent back to the remote + caller. + + + This default implementation does nothing, which + effectively sends back an empty reply to any and all + remote callers. + + + + + Enters the main loop of the RPC service. + + + Retrieves requests repeatedly from the service's + subscription. Each request is passed to + ProcessRequest. Once ProcessRequest returns, the request + is acknowledged via Subscription.Ack(). If transactional + mode is enabled, TxCommit is then called. Finally, the + loop begins again. + + + Runs until the subscription ends, which happens either as + a result of disconnection, or of a call to Close(). + + + + + Process a single request received from our + subscription. + + + If the request's properties contain a non-null, non-empty + CorrelationId string (see IBasicProperties), it is assumed + to be a two-way call, requiring a response. The ReplyTo + header property is used as the reply address (via + PublicationAddress.Parse, unless that fails, in which case it + is treated as a simple queue name), and the request is + passed to HandleCall(). + + + If the CorrelationId is absent or empty, the request is + treated as one-way asynchronous event, and is passed to + HandleCast(). + + + Usually, overriding HandleCall(), HandleCast(), or one of + their delegates is sufficient to implement a service, but + in some cases overriding ProcessRequest() is + required. Overriding ProcessRequest() gives the + opportunity to implement schemes for detecting interaction + patterns other than simple request/response or one-way + communication. + + + + + Enables transactional mode. + + + Once enabled, transactional mode is not only enabled for + all users of the underlying IModel instance, but cannot be + disabled without shutting down the entire IModel (which + involves shutting down all the services depending on it, + and should not be undertaken lightly). + + + This method calls IModel.TxSelect, every time it is + called. (TxSelect is idempotent, so this is harmless.) + + + + + Implement the IDisposable interface, permitting + SimpleRpcServer instances to be used in using + statements. + + + Manages a subscription to a queue. + + + This convenience class abstracts away from much of the detail + involved in receiving messages from a queue. + + + Once created, the Subscription consumes from a queue (using a + EventingBasicConsumer). Received deliveries can be retrieved + by calling Next(), or by using the Subscription as an + IEnumerator in, for example, a foreach loop. + + + Note that if the "noAck" option is enabled (which it is by + default), then received deliveries are automatically acked + within the server before they are even transmitted across the + network to us. Calling Ack() on received events will always do + the right thing: if "noAck" is enabled, nothing is done on an + Ack() call, and if "noAck" is disabled, IModel.BasicAck() is + called with the correct parameters. + + + + + Creates a new Subscription in "noAck" mode, + consuming from a named queue. + + + Creates a new Subscription, with full control over + both "noAck" mode and the name of the queue. + + + Creates a new Subscription, with full control over + both "noAck" mode, the name of the queue, and the consumer tag. + + + Retrieve the IBasicConsumer that is receiving the + messages from the server for us. Normally, you will not + need to access this property - use Next() and friends + instead. + + + Retrieve the consumer-tag that this subscription + is using. Will usually be a server-generated + name. + + + Returns the most recent value returned by Next(), + or null when either no values have been retrieved yet, the + end of the subscription has been reached, or the most + recent value has already been Ack()ed. See also the + documentation for Ack(). + + + Retrieve the IModel our subscription is carried by. + + + Returns true if we are in "noAck" mode, where + calls to Ack() will be no-ops, and where the server acks + messages before they are delivered to us. Returns false if + we are in a mode where calls to Ack() are required, and + where such calls will actually send an acknowledgement + message across the network to the server. + + + Retrieve the queue name we have subscribed to. + + + Implementation of the IEnumerator interface, for + permitting Subscription to be used in foreach + loops. + + + As per the IEnumerator interface definition, throws + InvalidOperationException if LatestEvent is null. + + + Does not acknowledge any deliveries at all. Ack() must be + called explicitly on received deliveries. + + + + + If LatestEvent is non-null, passes it to + Ack(BasicDeliverEventArgs). Causes LatestEvent to become + null. + + + If we are not in "noAck" mode, calls + IModel.BasicAck with the delivery-tag from ; + otherwise, sends nothing to the server. if is the same as LatestEvent + by pointer comparison, sets LatestEvent to null. + + + Passing an event that did not originate with this Subscription's + channel, will lead to unpredictable behaviour + + + + Closes this Subscription, cancelling the consumer + record in the server. + + + If LatestEvent is non-null, passes it to + Nack(BasicDeliverEventArgs, false, requeue). Causes LatestEvent to become + null. + + + If LatestEvent is non-null, passes it to + Nack(BasicDeliverEventArgs, multiple, requeue). Causes LatestEvent to become + null. + + + If we are not in "noAck" mode, calls + IModel.BasicNack with the delivery-tag from ; + otherwise, sends nothing to the server. if is the same as LatestEvent + by pointer comparison, sets LatestEvent to null. + + + Passing an event that did not originate with this Subscription's + channel, will lead to unpredictable behaviour + + + + Retrieves the next incoming delivery in our + subscription queue. + + + Returns null when the end of the stream is reached and on + every subsequent call. End-of-stream can arise through the + action of the Subscription.Close() method, or through the + closure of the IModel or its underlying IConnection. + + + Updates LatestEvent to the value returned. + + + Does not acknowledge any deliveries at all (but in "noAck" + mode, the server will have auto-acknowledged each event + before it is even sent across the wire to us). + + + + + Retrieves the next incoming delivery in our + subscription queue, or times out after a specified number + of milliseconds. + + + Returns false only if the timeout expires before either a + delivery appears or the end-of-stream is reached. If false + is returned, the out parameter "result" is set to null, + but LatestEvent is not updated. + + + Returns true to indicate a delivery or the end-of-stream. + + + If a delivery is already waiting in the queue, or one + arrives before the timeout expires, it is removed from the + queue and placed in the "result" out parameter. If the + end-of-stream is detected before the timeout expires, + "result" is set to null. + + + Whenever this method returns true, it updates LatestEvent + to the value placed in "result" before returning. + + + End-of-stream can arise through the action of the + Subscription.Close() method, or through the closure of the + IModel or its underlying IConnection. + + + This method does not acknowledge any deliveries at all + (but in "noAck" mode, the server will have + auto-acknowledged each event before it is even sent across + the wire to us). + + + A timeout of -1 (i.e. System.Threading.Timeout.Infinite) + will be interpreted as a command to wait for an + indefinitely long period of time for an item or the end of + the stream to become available. Usage of such a timeout is + equivalent to calling Next() with no arguments (modulo + predictable method signature differences). + + + + + Implementation of the IDisposable interface, + permitting Subscription to be used in using + statements. Simply calls Close(). + + + Implementation of the IEnumerable interface, for + permitting Subscription to be used in foreach + loops. + + + Implementation of the IEnumerator interface, for + permitting Subscription to be used in foreach + loops. + + + Does not acknowledge any deliveries at all. Ack() must be + called explicitly on received deliveries. + + + + + Dummy implementation of the IEnumerator interface, + for permitting Subscription to be used in foreach loops; + Reset()ting a Subscription doesn't make sense, so this + method always throws InvalidOperationException. + + + A thread-safe single-assignment reference cell. + + A fresh BlockingCell holds no value (is empty). Any thread + reading the Value property when the cell is empty will block + until a value is made available by some other thread. The Value + property can only be set once - on the first call, the + BlockingCell is considered full, and made immutable. Further + attempts to set Value result in a thrown + InvalidOperationException. + + + + Retrieve the cell's value, blocking if none exists + at present, or supply a value to an empty cell, thereby + filling it. + + + + Return valid timeout value + If value of the parameter is less then zero, return 0 + to mean infinity + + + Retrieve the cell's value, waiting for the given + timeout if no value is immediately available. + + + If a value is present in the cell at the time the call is + made, the call will return immediately. Otherwise, the + calling thread blocks until either a value appears, or + operation times out. + + + If no value was available before the timeout, an exception + is thrown. + + + + + Retrieve the cell's value, waiting for the given + timeout if no value is immediately available. + + + If a value is present in the cell at the time the call is + made, the call will return immediately. Otherwise, the + calling thread blocks until either a value appears, or + operation times out. + + + If no value was available before the timeout, an exception + is thrown. + + + + + Miscellaneous debugging and development utilities. + + Not part of the public API. + + + + Print a hex dump of the supplied bytes to stdout. + + + Print a hex dump of the supplied bytes to the supplied TextWriter. + + + Prints an indented key/value pair; used by DumpProperties() + Recurses into the value using DumpProperties(). + + + Dump properties of objects to the supplied writer. + + + Used internally by class Either. + + + Models the disjoint union of two alternatives, a + "left" alternative and a "right" alternative. + Borrowed from ML, Haskell etc. + + + Private constructor. Use the static methods Left, Right instead. + + + Retrieve the alternative represented by this instance. + + + Retrieve the value carried by this instance. + + + Constructs an Either instance representing a Left alternative. + + + Constructs an Either instance representing a Right alternative. + + + A class for allocating integer IDs in a given range. + + + A class representing a list of inclusive intervals + Creates an IntAllocator allocating integer IDs within the inclusive range [start, end] + + + Allocate a fresh integer from the range, or return -1 if no more integers + are available. This operation is guaranteed to run in O(1) + + + Make the provided integer available for allocation again. This operation + runs in amortized O(sqrt(range size)) time: About every sqrt(range size) + operations will take O(range_size + number of intervals) to complete and + the rest run in constant time. + + No error checking is performed, so if you double Free or Free an integer + that was not originally Allocated the results are undefined. Sorry. + + + + Subclass of BinaryReader that reads integers etc in correct network order. + + + + Kludge to compensate for .NET's broken little-endian-only BinaryReader. + Relies on BinaryReader always being little-endian. + + + + + + Construct a NetworkBinaryReader over the given input stream. + + + + + Construct a NetworkBinaryReader over the given input + stream, reading strings using the given encoding. + + + + Helper method for constructing a temporary + BinaryReader over a byte[]. + + + + Override BinaryReader's method for network-order. + + + + + Override BinaryReader's method for network-order. + + + + + Override BinaryReader's method for network-order. + + + + + Override BinaryReader's method for network-order. + + + + + Override BinaryReader's method for network-order. + + + + + Override BinaryReader's method for network-order. + + + + + Override BinaryReader's method for network-order. + + + + + Override BinaryReader's method for network-order. + + + + + Subclass of BinaryWriter that writes integers etc in correct network order. + + + +

+ Kludge to compensate for .NET's broken little-endian-only BinaryWriter. +

+ See also NetworkBinaryReader. +

+
+
+ + + Construct a NetworkBinaryWriter over the given input stream. + + + + + Construct a NetworkBinaryWriter over the given input + stream, reading strings using the given encoding. + + + + Helper method for constructing a temporary + BinaryWriter streaming into a fresh MemoryStream + provisioned with the given initialSize. + + + Helper method for extracting the byte[] contents + of a BinaryWriter over a MemoryStream, such as constructed + by TemporaryBinaryWriter. + + + + Override BinaryWriter's method for network-order. + + + + + Override BinaryWriter's method for network-order. + + + + + Override BinaryWriter's method for network-order. + + + + + Override BinaryWriter's method for network-order. + + + + + Override BinaryWriter's method for network-order. + + + + + Override BinaryWriter's method for network-order. + + + + + Override BinaryWriter's method for network-order. + + + + + Override BinaryWriter's method for network-order. + + + + A thread-safe shared queue implementation. + + + A thread-safe shared queue implementation. + + + Flag holding our current status. + + + The shared queue. + + Subclasses must ensure appropriate locking discipline when + accessing this field. See the implementation of Enqueue, + Dequeue. + + + + Close the queue. Causes all further Enqueue() + operations to throw EndOfStreamException, and all pending + or subsequent Dequeue() operations to throw an + EndOfStreamException once the queue is empty. + + + Retrieve the first item from the queue, or block if none available + + Callers of Dequeue() will block if no items are available + until some other thread calls Enqueue() or the queue is + closed. In the latter case this method will throw + EndOfStreamException. + + + + Retrieve the first item from the queue, or return + nothing if no items are available after the given + timeout + + + If one or more items are present on the queue at the time + the call is made, the call will return + immediately. Otherwise, the calling thread blocks until + either an item appears on the queue, or + millisecondsTimeout milliseconds have elapsed. + + + Returns true in the case that an item was available before + the timeout, in which case the out parameter "result" is + set to the item itself. + + + If no items were available before the timeout, returns + false, and sets "result" to null. + + + A timeout of -1 (i.e. System.Threading.Timeout.Infinite) + will be interpreted as a command to wait for an + indefinitely long period of time for an item to become + available. Usage of such a timeout is equivalent to + calling Dequeue() with no arguments. See also the MSDN + documentation for + System.Threading.Monitor.Wait(object,int). + + + If no items are present and the queue is in a closed + state, or if at any time while waiting the queue + transitions to a closed state (by a call to Close()), this + method will throw EndOfStreamException. + + + + + Retrieve the first item from the queue, or return + defaultValue immediately if no items are + available + + + If one or more objects are present in the queue at the + time of the call, the first item is removed from the queue + and returned. Otherwise, the defaultValue that was passed + in is returned immediately. This defaultValue may be null, + or in cases where null is part of the range of the queue, + may be some other sentinel object. The difference between + DequeueNoWait() and Dequeue() is that DequeueNoWait() will + not block when no items are available in the queue, + whereas Dequeue() will. + + + If at the time of call the queue is empty and in a + closed state (following a call to Close()), then this + method will throw EndOfStreamException. + + + + + Place an item at the end of the queue. + + If there is a thread waiting for an item to arrive, the + waiting thread will be woken, and the newly Enqueued item + will be passed to it. If the queue is closed on entry to + this method, EndOfStreamException will be thrown. + + + + Implementation of the IEnumerable interface, for + permitting SharedQueue to be used in foreach + loops. + + + Implementation of the IEnumerable interface, for + permitting SharedQueue to be used in foreach + loops. + + + Call only when the lock on m_queue is held. + + + + Implementation of the IEnumerator interface, for + permitting SharedQueue to be used in foreach loops. + + + Construct an enumerator for the given + SharedQueue. + + + Reset()ting a SharedQueue doesn't make sense, so + this method always throws + InvalidOperationException. + +
+
diff --git a/lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/rabbitmq.client.4.1.1.nupkg.sha512 b/lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/rabbitmq.client.4.1.1.nupkg.sha512 new file mode 100644 index 00000000..f2f54ca0 --- /dev/null +++ b/lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/rabbitmq.client.4.1.1.nupkg.sha512 @@ -0,0 +1 @@ +xs6V7QAB3vt940ThUl7jMIuMnONrVHVAqcqK445UzFaEma3cUHflDhWAo8BMv//h/SeFhC+ZKk/4OT7j+XPfCQ== \ No newline at end of file diff --git a/lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/rabbitmq.client.nuspec b/lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/rabbitmq.client.nuspec new file mode 100644 index 00000000..bd7e10c5 --- /dev/null +++ b/lambda/MAS/nice.logging.quickfix/rabbitmq.client/4.1.1/rabbitmq.client.nuspec @@ -0,0 +1,38 @@ + + + + RabbitMQ.Client + 4.1.1 + RabbitMQ .NET Client + RabbitMQ.Client + Pivotal + http://www.rabbitmq.com/dotnet.html + http://www.rabbitmq.com/dotnet.html + https://en.gravatar.com/userimage/10048884/0ea8846e080980f705da081be53599ce.png?size=100 + false + The RabbitMQ .NET client is the official client library for C# (and, implicitly, other .NET languages). Supports .NET Core and .NET 4.5.1+. + The RabbitMQ .NET client is the official client library for C#. Supports .NET Core and .NET 4.5.1+. + 2006 — current, Pivotal Software, Inc. + RabbitMQ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/.nupkg.metadata b/lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/.nupkg.metadata new file mode 100644 index 00000000..3171c299 --- /dev/null +++ b/lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/.nupkg.metadata @@ -0,0 +1,5 @@ +{ + "version": 2, + "contentHash": "kAZoUF/U/X+/ep5ZytpydcURbt1tvhyArOrWct0QLW72j6cquu2JyJlzNAaKW1yBZcblx1PvzvFJADhBuaIiMQ==", + "source": "https://api.nuget.org/v3/index.json" +} \ No newline at end of file diff --git a/lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/.signature.p7s b/lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..51eff75353a56518d7590fdc6e05b9d8fac5c7b5 GIT binary patch literal 9464 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 ICo1ND01-({C;$Ke literal 0 HcmV?d00001 diff --git a/lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/lib/net45/Serilog.Extensions.Logging.dll b/lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/lib/net45/Serilog.Extensions.Logging.dll new file mode 100644 index 0000000000000000000000000000000000000000..7853ecededd6682fd4ce44e9bbc65eaa6fde1907 GIT binary patch literal 9728 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 + + + Serilog.Extensions.Logging + + + + + Extends with Serilog configuration methods. + + + + + Add Serilog to the logging pipeline. + + The logger factory to configure. + The Serilog logger; if not supplied, the static will be used. + When true, dispose when the framework disposes the provider. If the + logger is not specified but is true, the method will be + called on the static class instead. + The logger factory. + + + + An that pipes events through Serilog. + + + + + Construct a . + + A Serilog logger to pipe events through; if null, the static class will be used. + If true, the provided logger or static log class will be disposed/closed when the provider is disposed. + + + + + + + + + + + + + + + diff --git a/lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/lib/netstandard1.3/Serilog.Extensions.Logging.dll b/lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/lib/netstandard1.3/Serilog.Extensions.Logging.dll new file mode 100644 index 0000000000000000000000000000000000000000..42f8f1a5ea2946a7d9ec2de0f6e5a7f6bdee03be GIT binary patch literal 9728 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 W7YyXz_$t=^mfQLN=KYU&;6DJmz1N)p literal 0 HcmV?d00001 diff --git a/lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/lib/netstandard1.3/Serilog.Extensions.Logging.xml b/lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/lib/netstandard1.3/Serilog.Extensions.Logging.xml new file mode 100644 index 00000000..85fd7afb --- /dev/null +++ b/lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/lib/netstandard1.3/Serilog.Extensions.Logging.xml @@ -0,0 +1,48 @@ + + + + Serilog.Extensions.Logging + + + + + Extends with Serilog configuration methods. + + + + + Add Serilog to the logging pipeline. + + The logger factory to configure. + The Serilog logger; if not supplied, the static will be used. + When true, dispose when the framework disposes the provider. If the + logger is not specified but is true, the method will be + called on the static class instead. + The logger factory. + + + + An that pipes events through Serilog. + + + + + Construct a . + + A Serilog logger to pipe events through; if null, the static class will be used. + If true, the provided logger or static log class will be disposed/closed when the provider is disposed. + + + + + + + + + + + + + + + diff --git a/lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/serilog.extensions.logging.1.2.0.nupkg.sha512 b/lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/serilog.extensions.logging.1.2.0.nupkg.sha512 new file mode 100644 index 00000000..38c523b4 --- /dev/null +++ b/lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/serilog.extensions.logging.1.2.0.nupkg.sha512 @@ -0,0 +1 @@ +NvTv/NhgOx4ysOLE77i7MZkSsdBPuKy9Vs6ESwbNzhLw6tAvHYncx2C6pSN9b2C0vyMAdLIxfxZGG31hRPsNVg== \ No newline at end of file diff --git a/lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/serilog.extensions.logging.nuspec b/lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/serilog.extensions.logging.nuspec new file mode 100644 index 00000000..f8141dc3 --- /dev/null +++ b/lambda/MAS/nice.logging.quickfix/serilog.extensions.logging/1.2.0/serilog.extensions.logging.nuspec @@ -0,0 +1,27 @@ + + + + Serilog.Extensions.Logging + 1.2.0 + Microsoft,Serilog Contributors + Microsoft,Serilog Contributors + http://www.apache.org/licenses/LICENSE-2.0 + https://github.com/serilog/serilog-extensions-logging + http://serilog.net/images/serilog-extension-nuget.png + false + Serilog provider for Microsoft.Extensions.Logging + serilog,Microsoft.Extensions.Logging + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/.nupkg.metadata b/lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/.nupkg.metadata new file mode 100644 index 00000000..22378e1b --- /dev/null +++ b/lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/.nupkg.metadata @@ -0,0 +1,5 @@ +{ + "version": 2, + "contentHash": "FshW9PfIdLRfFCCoyU5Z8YKg6axd0ufy9pbcgTyf/mOIZjt78zVl5lZAjUBI2YDHncS3gtH/Bf0YKqMCWh2/0Q==", + "source": "https://api.nuget.org/v3/index.json" +} \ No newline at end of file diff --git a/lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/.signature.p7s b/lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..5e4b759def28f7bc4d863a5236dfef9723c16afb GIT binary patch literal 9463 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 IrtL@m2l$Ul$N&HU literal 0 HcmV?d00001 diff --git a/lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/lib/net45/Serilog.Sinks.PeriodicBatching.dll b/lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/lib/net45/Serilog.Sinks.PeriodicBatching.dll new file mode 100644 index 0000000000000000000000000000000000000000..44cef483ace217ff51b5522edb5adb6d7c546c4b GIT binary patch literal 12288 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 + + + Serilog.Sinks.PeriodicBatching + + + + + Manages reconnection period and transient fault response for . + During normal operation an object of this type will simply echo the configured batch transmission + period. When availabilty fluctuates, the class tracks the number of failed attempts, each time + increasing the interval before reconnection is attempted (up to a set maximum) and at predefined + points indicating that either the current batch, or entire waiting queue, should be dropped. This + Serves two purposes - first, a loaded receiver may need a temporary reduction in traffic while coming + back online. Second, the sender needs to account for both bad batches (the first fault response) and + also overproduction (the second, queue-dropping response). In combination these should provide a + reasonable delivery effort but ultimately protect the sender from memory exhaustion. + + + Currently used only by , but may + provide the basis for a "smart" exponential backoff timer. There are other factors to consider + including the desire to send batches "when full" rather than continuing to buffer, and so-on. + + + + + Base class for sinks that log events in batches. Batching is + triggered asynchronously on a timer. + + + To avoid unbounded memory growth, events are discarded after attempting + to send a batch, regardless of whether the batch succeeded or not. Implementers + that want to change this behavior need to either implement from scratch, or + embed retry logic in the batch emitting functions. + + + + + Construct a sink posting to the specified database. + + The maximum number of events to include in a single batch. + The time to wait between checking for event batches. + + + + Construct a sink posting to the specified database. + + The maximum number of events to include in a single batch. + The time to wait between checking for event batches. + Maximum number of events in the queue. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + 2 + + + + Free resources held by the sink. + + If true, called because the object is being disposed; if false, + the object is being disposed from the finalizer. + + + + Emit a batch of log events, running to completion synchronously. + + The events to emit. + Override either or , + not both. + + + + Emit a batch of log events, running asynchronously. + + The events to emit. + Override either or , + not both. Overriding EmitBatch() is preferred. + + + + Emit the provided log event to the sink. If the sink is being disposed or + the app domain unloaded, then the event is ignored. + + Log event to emit. + The event is null. + + The sink implements the contract that any events whose Emit() method has + completed at the time of sink disposal will be flushed (or attempted to, + depending on app domain state). + + + + + Determine whether a queued log event should be included in the batch. If + an override returns false, the event will be dropped. + + + + + + + Allows derived sinks to perform periodic work without requiring additional threads + or timers (thus avoiding additional flush/shut-down complexity). + + + + diff --git a/lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/lib/netstandard1.1/Serilog.Sinks.PeriodicBatching.dll b/lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/lib/netstandard1.1/Serilog.Sinks.PeriodicBatching.dll new file mode 100644 index 0000000000000000000000000000000000000000..d762591d124d54e6787ff388e19c26161c3bb848 GIT binary patch literal 12288 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 dRmb)*`}z;y>9GH{ + + + Serilog.Sinks.PeriodicBatching + + + +

+ Manages reconnection period and transient fault response for . + During normal operation an object of this type will simply echo the configured batch transmission + period. When availabilty fluctuates, the class tracks the number of failed attempts, each time + increasing the interval before reconnection is attempted (up to a set maximum) and at predefined + points indicating that either the current batch, or entire waiting queue, should be dropped. This + Serves two purposes - first, a loaded receiver may need a temporary reduction in traffic while coming + back online. Second, the sender needs to account for both bad batches (the first fault response) and + also overproduction (the second, queue-dropping response). In combination these should provide a + reasonable delivery effort but ultimately protect the sender from memory exhaustion. + + + Currently used only by , but may + provide the basis for a "smart" exponential backoff timer. There are other factors to consider + including the desire to send batches "when full" rather than continuing to buffer, and so-on. + + + + + Base class for sinks that log events in batches. Batching is + triggered asynchronously on a timer. + + + To avoid unbounded memory growth, events are discarded after attempting + to send a batch, regardless of whether the batch succeeded or not. Implementers + that want to change this behavior need to either implement from scratch, or + embed retry logic in the batch emitting functions. + + + + + Construct a sink posting to the specified database. + + The maximum number of events to include in a single batch. + The time to wait between checking for event batches. + + + + Construct a sink posting to the specified database. + + The maximum number of events to include in a single batch. + The time to wait between checking for event batches. + Maximum number of events in the queue. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + 2 + + + + Free resources held by the sink. + + If true, called because the object is being disposed; if false, + the object is being disposed from the finalizer. + + + + Emit a batch of log events, running to completion synchronously. + + The events to emit. + Override either or , + not both. + + + + Emit a batch of log events, running asynchronously. + + The events to emit. + Override either or , + not both. Overriding EmitBatch() is preferred. + + + + Emit the provided log event to the sink. If the sink is being disposed or + the app domain unloaded, then the event is ignored. + + Log event to emit. + The event is null. + + The sink implements the contract that any events whose Emit() method has + completed at the time of sink disposal will be flushed (or attempted to, + depending on app domain state). + + + + + Determine whether a queued log event should be included in the batch. If + an override returns false, the event will be dropped. + + + + + + + Allows derived sinks to perform periodic work without requiring additional threads + or timers (thus avoiding additional flush/shut-down complexity). + + + + diff --git a/lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/lib/netstandard1.2/Serilog.Sinks.PeriodicBatching.dll b/lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/lib/netstandard1.2/Serilog.Sinks.PeriodicBatching.dll new file mode 100644 index 0000000000000000000000000000000000000000..62581c9e77011c40c1ec950acb9eab7acfe83278 GIT binary patch literal 12288 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 Ye*sUI^LHfw+x{0|>t9X$vwPtG0HW~eH2?qr literal 0 HcmV?d00001 diff --git a/lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/lib/netstandard1.2/Serilog.Sinks.PeriodicBatching.xml b/lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/lib/netstandard1.2/Serilog.Sinks.PeriodicBatching.xml new file mode 100644 index 00000000..d72e3719 --- /dev/null +++ b/lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/lib/netstandard1.2/Serilog.Sinks.PeriodicBatching.xml @@ -0,0 +1,109 @@ + + + + Serilog.Sinks.PeriodicBatching + + + + + Manages reconnection period and transient fault response for . + During normal operation an object of this type will simply echo the configured batch transmission + period. When availabilty fluctuates, the class tracks the number of failed attempts, each time + increasing the interval before reconnection is attempted (up to a set maximum) and at predefined + points indicating that either the current batch, or entire waiting queue, should be dropped. This + Serves two purposes - first, a loaded receiver may need a temporary reduction in traffic while coming + back online. Second, the sender needs to account for both bad batches (the first fault response) and + also overproduction (the second, queue-dropping response). In combination these should provide a + reasonable delivery effort but ultimately protect the sender from memory exhaustion. + + + Currently used only by , but may + provide the basis for a "smart" exponential backoff timer. There are other factors to consider + including the desire to send batches "when full" rather than continuing to buffer, and so-on. + + + + + Base class for sinks that log events in batches. Batching is + triggered asynchronously on a timer. + + + To avoid unbounded memory growth, events are discarded after attempting + to send a batch, regardless of whether the batch succeeded or not. Implementers + that want to change this behavior need to either implement from scratch, or + embed retry logic in the batch emitting functions. + + + + + Construct a sink posting to the specified database. + + The maximum number of events to include in a single batch. + The time to wait between checking for event batches. + + + + Construct a sink posting to the specified database. + + The maximum number of events to include in a single batch. + The time to wait between checking for event batches. + Maximum number of events in the queue. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + 2 + + + + Free resources held by the sink. + + If true, called because the object is being disposed; if false, + the object is being disposed from the finalizer. + + + + Emit a batch of log events, running to completion synchronously. + + The events to emit. + Override either or , + not both. + + + + Emit a batch of log events, running asynchronously. + + The events to emit. + Override either or , + not both. Overriding EmitBatch() is preferred. + + + + Emit the provided log event to the sink. If the sink is being disposed or + the app domain unloaded, then the event is ignored. + + Log event to emit. + The event is null. + + The sink implements the contract that any events whose Emit() method has + completed at the time of sink disposal will be flushed (or attempted to, + depending on app domain state). + + + + + Determine whether a queued log event should be included in the batch. If + an override returns false, the event will be dropped. + + + + + + + Allows derived sinks to perform periodic work without requiring additional threads + or timers (thus avoiding additional flush/shut-down complexity). + + + + diff --git a/lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/serilog.sinks.periodicbatching.2.1.0.nupkg.sha512 b/lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/serilog.sinks.periodicbatching.2.1.0.nupkg.sha512 new file mode 100644 index 00000000..9fa5cf65 --- /dev/null +++ b/lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/serilog.sinks.periodicbatching.2.1.0.nupkg.sha512 @@ -0,0 +1 @@ +h7PBEjHybihyezQ9QlyDuwUuJ/gGqaa6ZN+xCIbhDaypOuk8jWqo1xHU1R2oc7O1JZ3sHtB4eeRsuMrvJ+LEzQ== \ No newline at end of file diff --git a/lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/serilog.sinks.periodicbatching.nuspec b/lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/serilog.sinks.periodicbatching.nuspec new file mode 100644 index 00000000..ff86eef7 --- /dev/null +++ b/lambda/MAS/nice.logging.quickfix/serilog.sinks.periodicbatching/2.1.0/serilog.sinks.periodicbatching.nuspec @@ -0,0 +1,29 @@ + + + + Serilog.Sinks.PeriodicBatching + 2.1.0 + Serilog Contributors + Serilog Contributors + http://www.apache.org/licenses/LICENSE-2.0 + http://serilog.net/ + http://serilog.net/images/serilog-sink-nuget.png + false + The periodic batching sink for Serilog + serilog,batching,timer + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/.nupkg.metadata b/lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/.nupkg.metadata new file mode 100644 index 00000000..c50fcac5 --- /dev/null +++ b/lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/.nupkg.metadata @@ -0,0 +1,5 @@ +{ + "version": 2, + "contentHash": "7jaXpVUofqjaPSgjFKGDExHx04xx9zrjm0XdFzSFDoocfkHtUuvLnFqFwja/CPIqnU1yFZ0iKPdGSy8jbRro6w==", + "source": "https://api.nuget.org/v3/index.json" +} \ No newline at end of file diff --git a/lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/.signature.p7s b/lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..d65b77e608d3ea6f1b6523d85f6cee4499594107 GIT binary patch literal 9464 zcmds-c|25Y|HsW@>|@`zA<8<=j9rU_qAW$$gfX_sK4YhtAxg@Uts+ZGiK z91DaFnnjWL08k{}Lm@B>E5L$au#eJ%IKkjh2rUiZ_ zj0##!2|#1e7yyG-L@S}eL-Kk!lB)*BU7Hjb91yfe$zRsY-(Nw|UDwf2!P5Y1rEBD` z<6z*ftpX5C90=M9T00pTvnWVyfC4K6DA3F-7!(49vM~?8`@q}1cRB8Z{dd7BK%Kg- zwG~5X!F4%dm;eR@%nXj;gqoRRxB*UTgOQV2hu}icb|U(s^gZzyet?&Hn2D1uARqwk z2%f@&r_gvW4~zsLPCW(V6xD0}c zXJ1k3QkM42^WnWWxRbHC9i@d*kufo^GZ~p9c!T5O^J9jCOl>fcGPA5{SQY=LZ{O^= zo-=vuo7fie`hm^4Lq z@sa4~SnHhooD}v6b>55%8pQ0O#oV4wUW{MC$>ZV$nvlIwvr<8i3wsAGcN%owH+FE3pF=_P*q6?px8}u}PoHr~m9wPU+i)0I4!+nK zp|5M1s!R~LzHijLG3XXYw+lJ4FN|SF($KxFa;OJ8i=|G_*{z88r$&m7I88>s>#K3m zFFra}#2_=abt16pxTfrM*;Zu_yVH>0^p9jhXfNH`DOvOMx3JpJUQvyUj;>>5`J}Nu zWs9*QZyY{X9ds#ke=z-7)Qwq%jweht^u`g7;LjX;?IXIj!K)5DORcJNk#S}33m;}y zbgt%P;qsgg6UDQMES?pV^l*>6T84uZwqMzr&E}JFyT5Ls?!uumSvvY>=%Ir}d5es? z3OQ3>017PtP~d!Pp$li=6SV8BaP~9RF7--2NdNQBW%{p%E=CapV6hl1HF&|$#j5?( z1c?7BK`?*nyMDVll^%7qTQVOR zB&Bg;q|N0;<2UJTk6wgqNg7Ppk`f<4S;&su;>>Ya@t|*^)Yb|KLT#;XT;Ei!s^x2i~opbA1*hpw|V)lpa7@^kDFN}j0 z75hs^e1~M0-J4JNs;jWXPY#wE<=z-Q#&|1oI^V^pw0Dr0H`GkK{aXyUR`|Xj+8}5i^&**T`lizEF@3nZW(+{+-f8wPz&? zBpM%WlgXBr643CGg6=>kTzM$T-k;93FFV-P_0FX{8?pL6icHeKXM;yZ~>Oc-@_*TEJ!XAkq`UUWP(2{Q8_ z$V|00X40`2J6rU7`}rJvqUzALo#R(#{u8hQwGT!OP}&eXAV4u-Q)!K-06BIuK{)|- zaO1)0ITZ;I!-zhCr1x2Pe%-O6N23sImL|p_Br{Yy@)O-6DMyk z62aGt7=&^NLKzb9L@$z;v+sIe*x%^;mu$Tr=uz|1xqi7?t5d+d4Gvvx?<4&aiCJ&apOil6oA-?IyD$<^VH0efs(Mx6v5^Ap)m~bKag@*D&v0 z@Jz`OE=pN%cKhqG-3~T;YLxCvt6qEZ@p$2d%q*0TzVvXtc#6(uz$q-Qlopj zqe!vE?!%KJd}EEi<-oOm8Z zj_xbXU{Do&ER~%Lz_d|fo<4N)^ z7!arKe;oD;LjRXx20sX>3uptXKk6BffH26v1weWP!iCHXfkOatuW{rFR=5lp-U~~~S1jC*2v3(XOL^(hP+(|rL@c7U zcO|V`+V<1!CsBq8RD1YKxw3TpB}`1Q5{dqhe5RYW=|=sV%$3b-?u0qgx)? zJcp*cSWXf|IZnUVHk;wtc81mVLW!x`vR-OWbLvWvxM9Mm>JDzQf9b9+Qd%}Ys93u`#`FxPN{QA(edq@CK=<299!5#9R6#_`{ty-7Q>*Po7| z`BUSJ*u`ty#{qH-;GgUJPpD=n+rP?=U@Z)%KxmT3bmJ{RWn# zVz|yJJ2CbQF5~QY%G8;tATgz-5dvSeM)9&UG;yKI!zzfJ-m0JWsT?@sny%!Q#F8u} z{58A0M%r5O;_-sp%8TN**k)0qxTPet*xotzZMwCmVGMdHv$U$dZJKQ!-bbEhD2~+m zsee%~zZad;#-1N{pj?5@632dHd(Ov+yQWXxf3*`W=PGP_DZ^x2HVZfd}a}b{o~~ z;g|;~95Yn2hh@_q0MmlfPop7lFg&(^w^kH9AqWNlf@xI`&g(+xcwqpB3ZRYs13m*3 z`BMn4+TNh!btr2{zL5JQ4tFmNCctrL*ec0=nIC-}%1!e|--nKowPZ59=XKBIxY%wX z#7rI^D;C%sJYd}}0!4A+GWE*p&$6VR;^w^>)&Mu{;;JgZ#3Bo0o_ucmFzK8{j>;uR z0Oat^B19Mr+f{YJWg6sx^YnGXqqMz<-d;qUFKAm~L|3&eXbACaoIXtSBl)6?oO}bk zh;E>@vtHC~bf98cSp{{N;NfKIi}UcN)^b!bI}uUxsD0Qh3acKdTlsD`$5;!)@0{#GkrTFuXO%MPA=7M<2;Tj@pM`^+-O}ux zb9*M+(Ui|qlMJIeP29)&VV;UF@-xk79?jApODeZ}{Z8?7r2WE?ZR{oAdA?Mb9}AZ} z`$I~SivaSSKN@VC9XJHwu`Yuk%y1lFmwhzr2w(+R0A@T41P`2xlY$Gu84v?R0XhV& zED{D4fOExtcp(s#fA*YPU2FKU4n01(5PmeUmh!-Q70kb0XmFnrNMNK;&0Gb4(&{nl zOuy^a-vSm1diyd>IXY`c>9GEEZK-tpzeM7yY}!9Re-}0+=MplQ6o7x~X|Qk{$@2Pf zxpKL;F@8~E(LEw|U&eO)^u+~#Y;rjJiK{`Nl29L6;&$FUBgp>TkaXqv-i4hL*XYc)+9crUp zcWpF`k7>p|bauzz9O=pBnIX3&b0LqnBrEl_$9a>;A?YU`q~W@CqtoIW#-e~mI-JZ^$ z@rP3M{{g%(Dgfq375f8TpmYPx&?Kkp!TV(c1S z|JyKIkKJk=35a2>&>*4a=G%hR-N^~lQ=i=DZ>OlE!)mtO3si52ygD&)C;Hs8vyVJR z+tW%lL`Bpy>SiuppNV{5-xliAh>$MP9E@PuS{FjU%W#3QOi_R3$@Y$~MVAh|KXpOi z>%$R6u9tm}!e1qPTCPmAAO_5|Tz|UE@b$cERr0B04Xi41g``SOT3e-gPbQh$aPj;2l<(g7+o?k{g|%0KdSW zb|ZS@0Q7n{us#$AP@w!@^CCgNkz=j$Bdt#DNS%5$?}8qo0w52_W=Usli;~>b>Bsl` zt>OZ{cG9o9DZ=bNaai$hp@e1!n42@ntVGDHM<2m(P!#vK$ zf0n<4~zwt&t^iAiJ@C#-02#fcP$k~r~ddDyEiQX(9 z(4eV)7L(Krd3E`bS_P}gt+s(Am_4Im*77zFF6?*B)ZOo^FPwfgsLu7Ecko5ssH}By zvZWdP_@j&CTVQ8T%CxT(+`y4Rb{+uPskp|@!${{xP;t zy*yP=wEwQyuv7uJ0lj}-MuS29uitTAnEu`kXMja5blF@x|8P&}Xehq*C{6#l>4))s zanfJ;Mw7}CKXl#AB9T9iFkadp3R%gB%T>=qj_S^cGi!KHsOz2?Y!I}W(skV{L5ugl zB=r5VyG)_^hnO%EpMo#SoqM++gj)6Fg-crQ_4sc&C$zGwx&mQCpu6UToVP7Fj-D_q zP@Zh+qS><~m5j_hO5DRxS=X!6KJj#4)GgidhUyxeG#pkxRkNI-&WWlVkMO|glX6;!l<2Ptg36gz;j=DX5ZD9hbrM_6D!-i z4Voro4sgCNEH_|nf_yS_vLiqPotrh+@%IS4Q+2>*Gw8nsy4_Tuio(?a)nA-BUy?j% z*P#PeDYsg7tumBq&nc_O`;x%ZxK)JlP-l>&zK{L+l@0x7oP&O1z&b)fq`CnFKxVxS zB2{FKmf)AJzQy_FTY>ExeW4qUBiI*5!2Q(%orr%Mr^-L!l%cd{Ifa-it$nfS9rS*| z{F1``*-be8Q{MjcCVBm>2yZdtsSz7%Ta?>&M(!f_h8r>1=of`ELZ$^Lt28gIbXArm zoh*4|aw6&Dg9%(wN8W|Ox~B6r$~&1px-uR$PkT@(zP(K+xT|`~;}ABcb4#BZM0K{` zR5n?@bjluD9xsm$Y7Ka?k6j zr%6A}7?3bynDY&@J<4--Nc12q>QZ&{o?Aoymx$KvkeJ5Ft6s^&Zwl@Yi91d4SqZW? zwS<>-r|uKoLqDJIBYJnQX>mtU=apLr{q#6^DYskSX&GZrv?L2vC&bY2%*}Iwru0b| zTz#(fkYax&h8KI_MP+MlNi2o}wFZ9#Vh-930Qt;6hD#{hA3*-ITb4!61q3!c70@)C z0r1Bwa8zq>P4M%5w+;*Y5JL^B0flxiNa|z!Z zOA2w86Lc8k)3jKcpin3*w9dl`{^`c>@}i?jO*c1dTY^{ErDT;B%__58R!HD&m!Y!) zmqpl3<$9wDVRBLXZ9c~5=A7xoiwNU`s|7f=dq@p#Puz_iv$D1}x=XJAn6Q*tZ*uuq zWnXb3*MP`g*ku|Nx^z$b^#fM)K06yM)wC|`cRJHPFQAj6U^6vfOqAD@ZiRHi0^&FCBpvzycI`3 literal 0 HcmV?d00001 diff --git a/lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/lib/net45/Serilog.Sinks.RollingFile.dll b/lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/lib/net45/Serilog.Sinks.RollingFile.dll new file mode 100644 index 0000000000000000000000000000000000000000..ee34d732a0f3087deabbeb8c9c4c3962febfa2be GIT binary patch literal 18432 zcmeHvdw3kxmFKBPS3e}RyIZy_+p^ulmTB~&rIuvL7-M5emWbt-WMjb4Zgp2njayyq zs+Mh8$dP%3kU$nPkPIOq#0g8-gaqo=bn4+xwmeW7`gslQiw>!b?zL|)420*vw&|8=E3%_ z{*s@*;QdzP)6({DHI7YYtZ?2mCd|ZCIGM=hj6!%^51Z4ua3&Y--#HqdGE#bbO^t7@ zqk7i>(RN9p@lX5r7h8LUE(upjQQHX3rrsLIJ&fxhE~0=a%eLK2VEe`I5kSztm?89Q z^BpY8|CR3!$|U@v(7Tfh2Z=t(jyV4}PgD)sA8#aTIG^`+c$mmj!S?_ks=(U|`mqA= zcV7hno^UwquKa~zRl8}KNf3o?2T|aTUX82bw;8qDO+9NskZq-TT&!ylSH*Ah1vQCM z>{tBQHkn-X!#1K1Uryu|)G|1R{?C`uw=C60eY6@}i74put5zM6&nIh&>Ua4yzuWKe zd;Pu$jMJK_HtMD{WPt_cwki{K^43yRIIaL|Dq*PPj<*KPK2XeOm|V|7s^W*%#jMnF zL!obxH?jF@`7`po3&@Ez08MR6*PXZog|pgP zXtGv8plO~t^IW0%dWQ*{Y^F_y?X^*v&=g_~eTbmvzA#UtxKCRhZr8Ncjc29irOmb+ z&n>76%2pV1b2Y%^2p74#e^=`6A|=uYV(U7WukPlm5Jg~^&)uoiwYY%@R+afGi^D+Q z@kMF`HbdO6Rxhmy$q^Xo^V;IF&8jkQl#1fA!d}tlFt1cuorB|4*)@kyRb{_AhhfLv zHRls|ZLUh(-E#;lwRr{ldH{WZ+k$NJpINCGFL{=Wf-s$Ym)0uvr3ErlquDH^B~~@5{F=f_wyS z^tE|pB?79}tT@ybP$R7Xtu=B4W@tqLS`pPKfuKTHgBGmPd}x{btr+mSHV3z#~xXSFD9RtErwb4%43^oHyjZUcd!X=gQbT(e>< zg1)z$fDLx2VTcfF=#OS~gWELEoCsp0B?9NRRD0Sm+M34*L87LvR_%QNZg4F1hFk{X zQ-kF^Ds4?cmpm(maaN4tEWD%2vpjNEFO=76L9J!w#e^(OD8ZiN;W*P2fp4_d2J-;M zEa(cVOZVS>1!nT%$Og!Hm+r4QQ+0N^9CSsXTWe;1tr}F9U6nj{?i~6;l1Px~v6# z3^2_FZx5nyrnXiyy$Z%f3%cw9IYX$p4ZOCmp7Dp2vvr8u6$YjqW>9e~S|x9{R15z~ zGSx_fqY~JV!aPRUiFtgHnajb@CZAd6%%-JtsH85Kpr~ulQ7<(%+jI0A_MC2AY2T+Y zQ6!$=EiPe_yjaATJ!Q`>fyY-g3p={r-i~R6l+be~XbiC*F3b~N3SVa1VA|PKR_21R z7|9LOhm%_^Zq2LYS*G%x$$T%;k-`LyRYlyfh^TNOa=S`!u=te|bsVE$XFU};FjK;0 z^C-%SISUvWhOKj~7gn%ZSYd1B^&$<8h?SsxVhLEW`bARY8p!)Xgwi`u%0{*WHp?fl zdaALWx8PTSJ_5Pbt2%=r32OoWHf@gV;JWT+rxrTGZ9)?}DTw3Hr3U0wd?~WjBTXrkE7N1pM25ePm0(btIm#7eK1#mj| zo2w#wP>VMe+B`RAZeod{1rnnr3HGje6HDaF5^&I1NrL^$`w*8{Con0ohKIrB)verL zC9)SZpBCANTdNkiR$y4^Fr->*o%tSUcN>T%EwUdhds)^Z*RhzL)2co4Em#s%QKPL* z7M_}8iYIbC#LTl$A#!V>Hsvd6z*NB6*-#Ew| zm%Q>G^ap9tlwFj^C?TaJz`;0~nxHIms=|?)s4BAksix&779rGFf!t%)XfV@EiHxJZ zl?0f>0;I~7mYFw0!bmZ%k$Ku2{D{>xf(fj7L^7L0P7w2pIXwSZ&>nLa!3%_7;rIkw z#HZbDwl1PWZv@lESEaVDbelP}wMaHi+-w#i#wX@n71ly-rot<3Vb$*D>sOz(I-#sd zov4D4JTB)OI_ak-w0 z`XoHNvA;#VDtD{jz4VHI0kh8cqt)QaOXft2@+_7!)yQ$X@SZBKep4`d{~ogPERzfa z%xZa-y*kT*;W6@{)Od}n9qZQPfoqAN>%XQIV! zIX!}iZ^J5VYiu84_2Q1!`Piv3b}H}PXbWOn#hrgq_>3>%VBoo;1BHuPv6U3Ag3Emz z`rLf;a_czI<03zAMIE&2jK}J;v3hxy$61VctV*u4hr`!WTPLEJx3cVT5z8oZEYDpI zpmC)3agfo~qt{$5@iq*$>-cdTZ&VFuQvu*EiKX`fItzPi1&KgJy;)iXpbnWU>RbC&^KT9!Qbh!0x zxX^Ke2MAk9!lqI@8>9EM3>N~8`_B6jUVp^JehlH_`b^hwu?*2&9=k^xeaQ7!)f!!< zF^mhi-j%4XrO%_Y8vVvK?$ziC0ly(&#zk(8hP5X>8r2B-F8`ArAN6^M+&)_5{S(Tw zo}brf^pcNd{z%N-=N?owI_=@|4OQO`_-K1o8|2Bu^xr~8Bag~Zb1`fXR(-(x0ybNJ z>)x+uv|VBP541e${&o@TSEL_FXazDFb)o!Tx?I@2LbQ9U^rR<5F9z;_WK3v&htPSd z>Jv2~+U33j@WVdlt`mATE1y95R`gw?UwFB#TIli9KZ(|tdkUa$tA0$==oGkhv_(1P zL){>^{*e0xsg8ouDW9Ky40%8OXHjbmHuz|>`&X#d;AWj)R#?7CSeWvSz_;tGnEn!c z7@~K1*{XsKRkrPW)hzQRw8*3O6)|WWjVFA))i4Hc zk_6t%f~Sdj6`&6*%nOQ02#{9A*kZ!UizA*D0$YxZs5A!XduXqNF2O$qTDb8JT1)FH zcuf=$JgjHnHB);9)l_whFi}Fy@kI6Uq{83|tHN1tkvdHF5+nC9}4F zlut`NbXrZidgwqk!~KAb^w&b>bpcPv6R_mIstDlwd<>@n8|hit)=0nh9RdtgaV;Du z0Dcy=dgvJ`@2bPIb&E@*dRWes0w_<=F~BPjMRoL|C|@t#1DS83u13#6r$m2HPfHU0 zWYGsvu7!mX{j&NYaQ{ib;hOcJUm<4q)9ByL?`KYfdFFR4_KAC-lM8SYiI~LjCsct#%>YV&m=$c z%NqKoz_`7o+8TPz#yr1LjwLhJ6}QKg+`9IVI3*zGn()9x#@cKW%4Jy+e2?Ye|LKI)0qJ86-FaqBT!DKNXe zF1pO-p*@MZs6$}4QJC(OyQtT}W(2lS@+yb-ZW`0NXpg{bo!tv`cGFFc!!4W z4bVZYr^Nd%cLk@iK_W-$(_4z3M%%$kH~_EjA`y?XToLv#1l2w>!MgR2_rl zcO9&zdI&sT;V#8GD$`lJl<(#0bhGvDX6W0D$lqIs^ zbE?epXi-9zVfbZ08FgjIKO%Jg5^G~o-mdjUq35mOPSGxJIXGvz=sN5m4&#~z$%pHU zxHMdhKZ+-Dj^!Yr3%e06Hv;;wCh(l<6L5=w!vgLGTmqfUeGyQi?+Ca>+EBfmUL(#e z!xBeKHNCv34dn!4Vpw_^v9Oq0t2a?bYQ@+ehP*@{L)}rDK{nULM>QmYPH&nli?vo_ny_68`whH-Hdd%M@Gz2g&SwokgJSYuTou-co z{ZA3+%Lk=X{^t>SEVEIx@+@8Ac?snW)jy}lrT*Y==qc%?>T_5bo>erdU$pqRbcMfG z+U}G$s~e>;r~IOpk{*|y@!ui6h*sV&eFyMk(yP*P^|PRV!}H&z1CHd=+BqpD%2@%s zMC*@Bd0&V8xO6bkFBjmS8|7Ps-=2}ysyX?$(mAyN3j6a_;@te2B>QLNXX*3EzR%Lm z>bn8|uI66AIgQJzC`aUntXm3Ah-Baa6hX35^#zb zSXEZJJanay+#)0ggygW091)Vch2&mP{4`0gqpd9c88A;Z&~R8tP7BEyz%X|Br?3Xu zu$CS}c?CTQxQ4zB*g`J@#;DWXj*NU2;8wZ@@EvqB;3y7THjBDj1^gJ@0BvieB;Zy7 zlLFo*;Kv30x_~6JOjy810XGY{MZkjsCIp-p@DTxD6;M*RZli$n0zM+(E6O4IpB_mS zTmd(0pMvB;0ly~TD*}?6>0tpk3%CQP9(U6R>2vflotC~N&C4HAd77ivSzImk}4WfIXne)Qg>?ALo}V0VlEZ z;&E;S%+VUaJmSVrCS3|xK=d@BmQL@a|45%krmT`;(hbtDq~-Eu@;-S&{!j9dvQts# zIosPm3Ae|v!{>FU{Chxoi5Vp+EV+}gD)c7``dDU4-(eixH14oirlXssx8(ELnLTG z`#NZ2rMOLTtO4(Btm&Y^>0I()2kn^7W)tIC9mU~+-1L-g7O|aXN;mb?LZXAgU{u(i zu?o0t+_XL(KWZlOT%3x>2Q#@uHai1_xk3#4D90d_-o~I#+n~1*iqXbVJ*y`RBZ)$C zQnxmx;MXozPa8*!)HGa1qcc`PpK2f8NmEwRFteF)@RLRIRwK*xF)~*BHa(}CnIui< zh4|KK)5M64Byx!fJvBCI>WS2F3N^FwcqW%AWD?mDaZ4&iaceRG&rp1PI-O=8Q9NUD z=ol8t8+r6{i79>4p?Li2MDh@hWd<{P7Mx=6T*!f|bn{3edm(4cIHcz;B==`bbj2`d zM)ic5oZOWtK*2@iM)kwfdM>H&n4TI(_*`JppkYoW3K!D18!$SnmzudiVvmlQlGHKC zM_^%P@X)aB3l1b2g_pC&MEhtacgSjIl{9Q^Hg`s85jz+~nN`D62{V((6}C=i3)2wTn#hYgGcntE z+6+(RP<3metf=w6b%$ke^20a;U~a zbmOLuc-$)3@>ygpvcr57q)c*40Vj&%)1Y!6;UiPb8AzwftbTobdSZe{x=b5JBqk7= ztVSP6Bq!msGIuOt!tg~k-sJ@r>(%j z9>nq_${gLoIotKz1d7NT$wM?M5;2DX=NB3t%uXXWW5i0Niaa7jb|D|Z2T370W?)7g zva7<7fg@N21XjUCPfX~{l97*Z!^(i*9-B<$cA5i+r$OcMDkg7AbMv;+5-sCob~3Sh zz>0(EGiG40GgH%3!Y}M3(Xx#dhlcI2+AGX&Pi39vu*5mzMZ6Um%_nlg4zX0w-W)=c z;JebqVT2vRsqflMVG?Pe%qzCH)ySnY6VsTvT%89_H`#`Tbn60&ExAz238rm$#gNEm zj@v4W5vHe|MYx#%%F8lsGmYtd1wOoU;8;=@vy*m?-;5QnxXhO6JB-5UbUtsG@NAh{ z&i6)P(3s9uu(p^J*yrR5y!9zpfRBduAfU^XqFk9`PXsZE&5Q*%@#vRYTCft+mTYDs z=j<%l`C|q-d7l##jULM6F309)RqTPj+$y%TbQ$ZxZU8Zp) zgMA#?xv+%B(=drwKhXgA=j}7G$0=?(sknTkcp`E@LOgET_ezg|Jix(D!(;eH(#Z`# zM|8`=#;T}hAv4b3Q?O>t2wY`}73bp46xAQiP>|H#K7}zfY<-iy+rcD}3WYePHnB1R9V2QV|zFNg* ziaA%L3?mPtk7Sbi1#Ela!K5tmOUWC%Uly<292cj&Mg7QFB1;rzvXI)iDHbmcz9sB* zwjmZ_Z)>kY77d!lRI%)g1UqUpa~xZtsZ8POnF5pvMd#5rZt9B13;3QG+lE{rk;z%b z{TnN|NVX`YqEe4JLfZG}6VurQrehw7lUMi>yPO|v`^A*82)V*E4O4W3J#KfxF7a@T zPAB12_LChHBInvd{fQZ2ZZc629PSY6`8qAnhp^U=c1?)U9 z6OUv}Bgc8}VwO3NKb02#Kg<>2kpt1jSR%{N@TdT$nfdu~LxR;mbQT@$i7N4Op_p zG;zP!!?-ZPNs6U)t->*78g@fs1B87n9_V-}#g1qy4-CIG7EV`kbcnW+fqNR*1WxTu zoO~BhW*XI|aW`=~!?XfUZcL(gUJa=<{xPOg3h$?mqLdMQ3s^$X!>Dh7#`qCj8JuP% zXdF-%H70S-p~UUlGz+I*T$iny04GDNjirk9Qh1L{!SVCjrzLqv6i|Dx!djZ$fw~id zlYs@?D%+7oZ7%20k^xEvJ>Xtk0a~Rk89FZHvXGd<#XXrqT}zb41&@1}!x?T4SY=Dn z{6p7+#0`XnN$iY;BLBKE?A!tjW_Q?bE}NHx)@jh$sJAna-NF(&^w@^uvz8#X$uM_7 zIE8i4&M`QTox&Dpg+_Y_Y{^Q;@DTB^umkJ?Ou<46?lb_|P7Klfr}mtusBAiS2}>_T z*|b@F3owWKQAaH|m_$snqE^t0aW{nqI4W(k3Xo#Q<{cB*LC1tXmIw<&4vTTlK^u20 za-Jq`xdScZ1@GPg*uxz+Ay>9%60O;B$pbM3KF5mPzJcyrpfI0jMWusmz2xPnodS<) zD(4U>vv^fEhfi~gF*_!-=b?-H3i?v(l3R8$xhc4atYY*Po&VN-E2fm9OL-b|IB_T$Xf2GA9myP(Ja9=+cxc(1#UVl8 z@Ul-*@Res{gs#HNxeHs|gg?eeAspyR4w9mjj@K=mKJ2jCL~*W+erPsxHjPb&3L?S<{r?4I8r+_UP5k=r^ybn0{O8oi5@ zFiC1yk~}Ve;1VwS8ORzyX#OMM%kCwi`KP2%y&A@Q1rQpTa1sP>m;|eqTww~$KdQQ= z&~Ch~k^G@8T)xi5Wxuv0I3NW_+(1It1xI{gCDe_=m7!s6N$5r?m|(Gndc`f_+a$>o zn!nHQR=JMP$I#<(2}D4T>XsX1ykwCY0y5hino~)V8tgU_csC*k6Zq$Lha$pCf2iK$ z@v|wCR7<{q#3rAVR*~Y9{Lr(~@ApH4-_Mg3^f)vl*M!vy)J?z|8sGrW za`Z4N^!bI8mIUYTK`;F9Uj4-k<1Tw0(}M~8Ek~$6m{@3#Zeec)F5_XA{P-g zZaLJoGSuMM(;%GNP=hvCmi*}=gjbE%t@%R@_{%dMPuY(*OLl_|@EW(}M*w>K!TC24 zZhnskQSSGkrhjDv6a0P`+kz?-Iw>KD;mR#|>xAfJiVHHVIc#gjpSQVzhvpwgxIO`6 z?UCTyQ|Me6Q|EC%Pl}T@0(rtl@UfE=I=RGyu5#=_!Im0wiKc=lmj!|eo;AIm)5j0& zTh{f;U7oeiy}sv@KYdSN{t=)e4IdE1-GE4#k_(L0~6zkgZXo*!TT!p7&TkN$q_ z@_ftpGwr$e+_%5`%HQ5a$A`baXycoEf6+wgr|!SwpH+Opi#KsZn{m7N5-2ku89$*Yr18NedW%eB4K^V&B@avOy%%#MNcQz(4P-jy+1@Q092 zvQjjJsul|4+N+7Q`H6lHTc^?`^x)S+yHThT|v=<^5<0IDDB=iU+ zIW)C6>@KAiTh)v#Qfe^a4l9yBn7|w%&f7rz!4Z2xiWKV)U_ycnk$`_u*iMw8dfQ;k zVRQ`86RH<=1cE#)7!A-_UOBL+czEhZ$gf81f`mY^m@i3oN;Rz_rXI^1G!3^VZKJ1(WgxkWS8JySa z;r1N^V_`fE@`-gAht-qeG#+ba+Hh<;o#YoasW8s2a|L{3jZZY(vGz`UmW@T%Cy`4a zMEC-KIjbqX-e`3W(yzof-1w^B#g@~_!}yx^Q1Kk%!h>FZ&uq1ZcTJDu{qZ~WnJc5w z&aNo`x_ZT}&&HzBo@l2aIQ;I;?pRkxtb-*5olCgVPmDZd(wI|t@p_js~LACIQeow%h_>E3i_N6-3bvZt#PyjV0f9_>r7k0qih zJpnv5-j(c2b@Zmj(>-CWRf*RWjC>?p;6L+tJ(C)zR0{(+yTPYQ&Psu4r=o`gE+jt24bm z+Bu#|^z?P=J$i4VucNy+)*VZwQ7IZ-pXlmKC8FtAGM(z~*2g=$;hdiFj=rwmZas-l z*(H2c|CXnL#iPlJ6V8^4zHG*{N#1zZ;#Z#f%4IL>Lzh;4@{t!lcV_gihd%Pj2fj0P z=%qI{o%zE*e0H7o(5HX%==yWgA7|fq`1${qzH93r3fXJ#+3}OH`RDKR-tmsFUY}}v z{_~lU4Ub;(!!vuj==3j!uK3{QFaMzHrY+YTd+sCef8U{PA9?wvkM=%%Zt>$kIexWrY-SC6K1$34h!nOY({(eM!f5Q|mcLDCh*IIGF0osGoF#b;qJAe-Z z4%+|M1^SBm>$756#Me0db_lrj)gt8-o?B%V}14W$xnDnN>t_lb*Wdbg0VABh-t;h7pfpyy~W>hhTs zZ!`E&tAJLx#fu+Nlus6l=UMzTZa>YBqCQ(tJjQ54FpL7{Esp(c-wtmLKsO(f@S(_r zV=tdb@R`pfIB7ic@uA2J9`tyNWCG{MN`CycAF%DsPSH~Sn;RK@D0;6SQWk2kCFQLR zyDE$;iuJNAyH8lmJ>l&S|6fPOi||;w3i3Q6_JIID)Mn8O=d=O+tL!s>(Z?fj z2o|&>PAZRgiuSc*bI1K7Jm#|9ym{l(tgIM?Jo?R+Prw&ADiSuQgbh0#I_qcYqQ2r| zHvOAyiSpm5&@QxLz&_jK=X`V6Pzw>XG{kLJa R7bo1mb94V+{a=;`{txYKY)=3H literal 0 HcmV?d00001 diff --git a/lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/lib/net45/Serilog.Sinks.RollingFile.xml b/lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/lib/net45/Serilog.Sinks.RollingFile.xml new file mode 100644 index 00000000..f5ed8806 --- /dev/null +++ b/lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/lib/net45/Serilog.Sinks.RollingFile.xml @@ -0,0 +1,110 @@ + + + + Serilog.Sinks.RollingFile + + + + + Extends with rolling file configuration methods. + + + + + Write log events to a series of files. Each file will be named according to + the date of the first log entry written to it. Only simple date-based rolling is + currently supported. + + Logger sink configuration. + String describing the location of the log files, + with {Date} in the place of the file date. E.g. "Logs\myapp-{Date}.log" will result in log + files such as "Logs\myapp-2013-10-20.log", "Logs\myapp-2013-10-21.log" and so on. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + A message template describing the format used to write to the sink. + the default is "{Timestamp} [{Level}] {Message}{NewLine}{Exception}". + Supplies culture-specific formatting information, or null. + The maximum size, in bytes, to which any single log file will be allowed to grow. + For unrestricted growth, pass null. The default is 1 GB. + The maximum number of log files that will be retained, + including the current log file. For unlimited retention, pass null. The default is 31. + Indicates if flushing to the output file can be buffered or not. The default + is false. + Allow the log files to be shared by multiple processes. The default is false. + If provided, a full disk flush will be performed periodically at the specified interval. + Configuration object allowing method chaining. + The file will be written using the UTF-8 encoding without a byte-order mark. + + + + Write log events to a series of files. Each file will be named according to + the date of the first log entry written to it. Only simple date-based rolling is + currently supported. + + Logger sink configuration. + Formatter to control how events are rendered into the file. To control + plain text formatting, use the overload that accepts an output template instead. + String describing the location of the log files, + with {Date} in the place of the file date. E.g. "Logs\myapp-{Date}.log" will result in log + files such as "Logs\myapp-2013-10-20.log", "Logs\myapp-2013-10-21.log" and so on. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + The maximum size, in bytes, to which any single log file will be allowed to grow. + For unrestricted growth, pass null. The default is 1 GB. + The maximum number of log files that will be retained, + including the current log file. For unlimited retention, pass null. The default is 31. + Indicates if flushing to the output file can be buffered or not. The default + is false. + Allow the log files to be shared by multiple processes. The default is false. + If provided, a full disk flush will be performed periodically at the specified interval. + Configuration object allowing method chaining. + The file will be written using the UTF-8 encoding without a byte-order mark. + + + + Write log events to a series of files. Each file will be named according to + the date of the first log entry written to it. Only simple date-based rolling is + currently supported. + + + + Construct a . + String describing the location of the log files, + with {Date} in the place of the file date. E.g. "Logs\myapp-{Date}.log" will result in log + files such as "Logs\myapp-2013-10-20.log", "Logs\myapp-2013-10-21.log" and so on. + Formatter used to convert log events to text. + The maximum size, in bytes, to which a log file will be allowed to grow. + For unrestricted growth, pass null. The default is 1 GB. + The maximum number of log files that will be retained, + including the current log file. For unlimited retention, pass null. The default is 31. + Character encoding used to write the text file. The default is UTF-8 without BOM. + Indicates if flushing to the output file can be buffered or not. The default + is false. + Allow the log files to be shared by multiple processes. The default is false. + Configuration object allowing method chaining. + The file will be written using the UTF-8 character set. + + + + Emit the provided log event to the sink. + + The log event to write. + Events that come in out-of-order (e.g. around the rollovers) + may end up written to a later file than their timestamp + would indicate. + + + + Performs application-defined tasks associated with freeing, releasing, or + resetting unmanaged resources. + + + + + + + diff --git a/lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/lib/netstandard1.3/Serilog.Sinks.RollingFile.dll b/lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/lib/netstandard1.3/Serilog.Sinks.RollingFile.dll new file mode 100644 index 0000000000000000000000000000000000000000..d354bc60cca59360e191b39b7c0e2610b9f141f4 GIT binary patch literal 18432 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 A#Q*>R literal 0 HcmV?d00001 diff --git a/lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/lib/netstandard1.3/Serilog.Sinks.RollingFile.xml b/lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/lib/netstandard1.3/Serilog.Sinks.RollingFile.xml new file mode 100644 index 00000000..f5ed8806 --- /dev/null +++ b/lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/lib/netstandard1.3/Serilog.Sinks.RollingFile.xml @@ -0,0 +1,110 @@ + + + + Serilog.Sinks.RollingFile + + + + + Extends with rolling file configuration methods. + + + + + Write log events to a series of files. Each file will be named according to + the date of the first log entry written to it. Only simple date-based rolling is + currently supported. + + Logger sink configuration. + String describing the location of the log files, + with {Date} in the place of the file date. E.g. "Logs\myapp-{Date}.log" will result in log + files such as "Logs\myapp-2013-10-20.log", "Logs\myapp-2013-10-21.log" and so on. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + A message template describing the format used to write to the sink. + the default is "{Timestamp} [{Level}] {Message}{NewLine}{Exception}". + Supplies culture-specific formatting information, or null. + The maximum size, in bytes, to which any single log file will be allowed to grow. + For unrestricted growth, pass null. The default is 1 GB. + The maximum number of log files that will be retained, + including the current log file. For unlimited retention, pass null. The default is 31. + Indicates if flushing to the output file can be buffered or not. The default + is false. + Allow the log files to be shared by multiple processes. The default is false. + If provided, a full disk flush will be performed periodically at the specified interval. + Configuration object allowing method chaining. + The file will be written using the UTF-8 encoding without a byte-order mark. + + + + Write log events to a series of files. Each file will be named according to + the date of the first log entry written to it. Only simple date-based rolling is + currently supported. + + Logger sink configuration. + Formatter to control how events are rendered into the file. To control + plain text formatting, use the overload that accepts an output template instead. + String describing the location of the log files, + with {Date} in the place of the file date. E.g. "Logs\myapp-{Date}.log" will result in log + files such as "Logs\myapp-2013-10-20.log", "Logs\myapp-2013-10-21.log" and so on. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + The maximum size, in bytes, to which any single log file will be allowed to grow. + For unrestricted growth, pass null. The default is 1 GB. + The maximum number of log files that will be retained, + including the current log file. For unlimited retention, pass null. The default is 31. + Indicates if flushing to the output file can be buffered or not. The default + is false. + Allow the log files to be shared by multiple processes. The default is false. + If provided, a full disk flush will be performed periodically at the specified interval. + Configuration object allowing method chaining. + The file will be written using the UTF-8 encoding without a byte-order mark. + + + + Write log events to a series of files. Each file will be named according to + the date of the first log entry written to it. Only simple date-based rolling is + currently supported. + + + + Construct a . + String describing the location of the log files, + with {Date} in the place of the file date. E.g. "Logs\myapp-{Date}.log" will result in log + files such as "Logs\myapp-2013-10-20.log", "Logs\myapp-2013-10-21.log" and so on. + Formatter used to convert log events to text. + The maximum size, in bytes, to which a log file will be allowed to grow. + For unrestricted growth, pass null. The default is 1 GB. + The maximum number of log files that will be retained, + including the current log file. For unlimited retention, pass null. The default is 31. + Character encoding used to write the text file. The default is UTF-8 without BOM. + Indicates if flushing to the output file can be buffered or not. The default + is false. + Allow the log files to be shared by multiple processes. The default is false. + Configuration object allowing method chaining. + The file will be written using the UTF-8 character set. + + + + Emit the provided log event to the sink. + + The log event to write. + Events that come in out-of-order (e.g. around the rollovers) + may end up written to a later file than their timestamp + would indicate. + + + + Performs application-defined tasks associated with freeing, releasing, or + resetting unmanaged resources. + + + + + + + diff --git a/lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/serilog.sinks.rollingfile.3.2.0.nupkg.sha512 b/lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/serilog.sinks.rollingfile.3.2.0.nupkg.sha512 new file mode 100644 index 00000000..220909d7 --- /dev/null +++ b/lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/serilog.sinks.rollingfile.3.2.0.nupkg.sha512 @@ -0,0 +1 @@ +nEsyKeHUQUprb5Z4TF0RjV55XO3plH2L/Es0lAPebxzme1vLXP99mZq4Zr9Wpupltqeot9i44Miph2WbIILuqA== \ No newline at end of file diff --git a/lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/serilog.sinks.rollingfile.nuspec b/lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/serilog.sinks.rollingfile.nuspec new file mode 100644 index 00000000..93bbf67b --- /dev/null +++ b/lambda/MAS/nice.logging.quickfix/serilog.sinks.rollingfile/3.2.0/serilog.sinks.rollingfile.nuspec @@ -0,0 +1,27 @@ + + + + Serilog.Sinks.RollingFile + 3.2.0 + Serilog Contributors + Serilog Contributors + http://www.apache.org/licenses/LICENSE-2.0 + http://serilog.net/ + http://serilog.net/images/serilog-sink-nuget.png + false + The rolling file sink for Serilog - Simple .NET logging with fully-structured events + serilog,file,io,rolling + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/.nupkg.metadata b/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/.nupkg.metadata new file mode 100644 index 00000000..97dd20a7 --- /dev/null +++ b/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/.nupkg.metadata @@ -0,0 +1,5 @@ +{ + "version": 2, + "contentHash": "JwwkgNYNFKT4kQZ3qBV3VqPgchUg1A6FnlFa9hgyanylwBhJ7eTFl3pgLVxijFEb+oHLImRcMaTsMzBt2AG0aQ==", + "source": "https://api.nuget.org/v3/index.json" +} \ No newline at end of file diff --git a/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/.signature.p7s b/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..cc8132ccd7cb040dfe492a3280c076645e85c4c7 GIT binary patch literal 9464 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

}dh5V3ZQ?FuF^l_e2HcTr}y) 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 VzC*vO2CxTQ + + + Serilog + + + +

+ Create properties based on an ordered list of provided values. + + The template that the parameters apply to. + Objects corresponding to the properties + represented in the message template. + A list of properties; if the template is malformed then + this will be empty. + + + + Implemented on types that apply settings to a logger configuration. + + + + + Apply the settings to the logger configuration. + + The logger configuration to apply settings to. + + + + Controls audit sink configuration. + + + + + Audit log events to the specified . + + The sink. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + Configuration object allowing method chaining. + + + + Audit log events to the specified . + + The sink. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + Configuration object allowing method chaining. + + + + Audit log events to a sub-logger, where further processing may occur. Events through + the sub-logger will be constrained by filters and enriched by enrichers that are + active in the parent. A sub-logger cannot be used to log at a more verbose level, but + a less verbose level is possible. + + An action that configures the sub-logger. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + Configuration object allowing method chaining. + + + + Audit log events to a sub-logger, where further processing may occur. Events through + the sub-logger will be constrained by filters and enriched by enrichers that are + active in the parent. A sub-logger cannot be used to log at a more verbose level, but + a less verbose level is possible. + + The sub-logger. This will not be shut down automatically when the + parent logger is disposed. + The minimum level for + events passed through the sink. + Configuration object allowing method chaining. + + + + Controls template parameter destructuring configuration. + + + + + Treat objects of the specified type as scalar values, i.e., don't break + them down into properties event when destructuring complex types. + + Type to treat as scalar. + Configuration object allowing method chaining. + + + + Treat objects of the specified type as scalar values, i.e., don't break + them down into properties event when destructuring complex types. + + Type to treat as scalar. + Configuration object allowing method chaining. + + + + When destructuring objects, transform instances with the provided policies. + + Policies to apply when destructuring. + Configuration object allowing method chaining. + + + + When destructuring objects, transform instances with the provided policy. + + Policy to apply when destructuring. + Configuration object allowing method chaining. + + + + When destructuring objects, transform instances of the specified type with + the provided function. + + Function mapping instances of + to an alternative representation. + Type of values to transform. + Configuration object allowing method chaining. + + + + + When destructuring objects, transform instances of the specified type with + the provided function, if the predicate returns true. Be careful to avoid any + intensive work in the predicate, as it can slow down the pipeline significantly. + + A predicate used to determine if the transform applies to + a specific type of value + Function mapping instances of + to an alternative representation. + Type of values to transform. + Configuration object allowing method chaining. + + + + + When destructuring objects, depth will be limited to 5 property traversals deep to + guard against ballooning space when recursive/cyclic structures are accidentally passed. To + increase this limit pass a higher value. + + The maximum depth to use. + Configuration object allowing method chaining. + + + + + When destructuring objects, string values can be restricted to specified length + thus avoiding bloating payload. Limit is applied to each value separately, + sum of length of strings can exceed limit. + + The maximum string length. + Configuration object allowing method chaining. + When passed length is less than 2 + + + + When destructuring objects, collections be restricted to specified count + thus avoiding bloating payload. Limit is applied to each collection separately, + sum of length of collection can exceed limit. + Applies limit to all including dictionaries. + + Configuration object allowing method chaining. + When passed length is less than 1 + + + + Controls enrichment configuration. + + + + + Specifies one or more enrichers that may add properties dynamically to + log events. + + Enrichers to apply to all events passing through + the logger. + Configuration object allowing method chaining. + + + + Specifies an enricher that may add properties dynamically to + log events. + + Enricher type to apply to all events passing through + the logger. + Configuration object allowing method chaining. + + + + Include the specified property value in all events logged to the logger. + + The name of the property to add. + The property value to add. + If true, objects of unknown type will be logged as structures; otherwise they will be converted using . + Configuration object allowing method chaining. + + + + Enrich log events with properties from . + + Configuration object allowing method chaining. + + + + + Controls filter configuration. + + + + + Filter out log events from the stream based on the provided filter. + + The filters to apply. + Configuration object allowing method chaining. + + + + Filter out log events from the stream based on the provided filter. + + The filters to apply. + Configuration object allowing method chaining. + + + + Filter out log events that match a predicate. + + Function that returns true when an event + should be excluded (silenced). + Configuration object allowing method chaining. + + + + Filter log events to include only those that match a predicate. + + Function that returns true when an event + should be included (emitted). + Configuration object allowing method chaining. + + + + Controls sink configuration. + + + + + Sets the minimum level at which events will be passed to sinks. + + The minimum level to set. + Configuration object allowing method chaining. + + + + Sets the minimum level to be dynamically controlled by the provided switch. + + The switch. + Configuration object allowing method chaining. + + + + Anything and everything you might want to know about + a running block of code. + + Configuration object allowing method chaining. + + + + Internal system events that aren't necessarily + observable from the outside. + + Configuration object allowing method chaining. + + + + The lifeblood of operational intelligence - things + happen. + + Configuration object allowing method chaining. + + + + Service is degraded or endangered. + + Configuration object allowing method chaining. + + + + Functionality is unavailable, invariants are broken + or data is lost. + + Configuration object allowing method chaining. + + + + If you have a pager, it goes off when one of these + occurs. + + Configuration object allowing method chaining. + + + + Override the minimum level for events from a specific namespace or type name. + + The (partial) namespace or type name to set the override for. + The switch controlling loggers for matching sources. + Configuration object allowing method chaining. + + + + Override the minimum level for events from a specific namespace or type name. + + The (partial) namespace or type name to set the override for. + The minimum level applied to loggers for matching sources. + Configuration object allowing method chaining. + + + + Allows additional setting sources to drive the logger configuration. + + + + + Apply external settings to the logger configuration. + + Configuration object allowing method chaining. + + + + Apply settings specified in the Serilog key-value setting format to the logger configuration. + + A list of key-value pairs describing logger settings. + Configuration object allowing method chaining. + + + + Controls sink configuration. + + + + + Write log events to the specified . + + The sink. + The minimum level for + events passed through the sink. + Configuration object allowing method chaining. + Provided for binary compatibility for earlier versions, + should be removed in 3.0. Not marked obsolete because warnings + would be syntactically annoying to avoid. + + + + Write log events to the specified . + + The sink. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + Configuration object allowing method chaining. + + + + Write log events to the specified . + + The sink. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + Configuration object allowing method chaining. + + + + Write log events to a sub-logger, where further processing may occur. Events through + the sub-logger will be constrained by filters and enriched by enrichers that are + active in the parent. A sub-logger cannot be used to log at a more verbose level, but + a less verbose level is possible. + + An action that configures the sub-logger. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + Configuration object allowing method chaining. + + + + Write log events to a sub-logger, where further processing may occur. Events through + the sub-logger will be constrained by filters and enriched by enrichers that are + active in the parent. A sub-logger cannot be used to log at a more verbose level, but + a less verbose level is possible. + + The sub-logger. This will not be shut down automatically when the + parent logger is disposed. + The minimum level for + events passed through the sink. + Configuration object allowing method chaining. + + + + Helper method for wrapping sinks. + + The parent sink configuration. + A function that allows for wrapping s + added in . + An action that configures sinks to be wrapped in . + Configuration object allowing method chaining. + + + + Holds ambient properties that can be attached to log events. To + configure, use the method. + + + Configuration: + + var log = new LoggerConfiguration() + .Enrich.FromLogContext() + ... + + Usage: + + using (LogContext.PushProperty("MessageId", message.Id)) + { + Log.Information("The MessageId property will be attached to this event"); + } + + + The scope of the context is the current logical thread, using AsyncLocal + (and so is preserved across async/await calls). + + + + Push a property onto the context, returning an + that must later be used to remove the property, along with any others that + may have been pushed on top of it and not yet popped. The property must + be popped from the same thread/logical call context. + + The name of the property. + The value of the property. + A handle to later remove the property from the context. + If true, and the value is a non-primitive, non-array type, + then the value will be converted to a structure; otherwise, unknown types will + be converted to scalars, which are generally stored as strings. + A token that must be disposed, in order, to pop properties back off the stack. + + + + Push an enricher onto the context, returning an + that must later be used to remove the property, along with any others that + may have been pushed on top of it and not yet popped. The property must + be popped from the same thread/logical call context. + + An enricher to push onto the log context + A token that must be disposed, in order, to pop properties back off the stack. + + + + + Push multiple enrichers onto the context, returning an + that must later be used to remove the property, along with any others that + may have been pushed on top of it and not yet popped. The property must + be popped from the same thread/logical call context. + + . + Enrichers to push onto the log context + A token that must be disposed, in order, to pop properties back off the stack. + + + + + Push enrichers onto the log context. This method is obsolete, please + use instead. + + Enrichers to push onto the log context + A token that must be disposed, in order, to pop properties back off the stack. + + + + + Obtain an enricher that represents the current contents of the . This + can be pushed back onto the context in a different location/thread when required. + + An enricher that represents the current contents of the . + + + + Constants used in the core logging pipeline and associated types. + + + + + The name of the property included in the emitted log events + when ForContext<T>() and overloads are + applied. + + + + + Adds a new property encricher to the log event. + + + + + Create a new property enricher. + + The name of the property. + The value of the property. + A handle to later remove the property from the context. + If true, and the value is a non-primitive, non-array type, + then the value will be converted to a structure; otherwise, unknown types will + be converted to scalars, which are generally stored as strings. + + + + + + Enrich the log event. + + The log event to enrich. + Factory for creating new properties to add to the event. + + + + Determine how, when destructuring, a supplied value is represented + as a complex log event property. + + + + + If supported, destructure the provided value. + + The value to destructure. + Recursively apply policies to destructure additional values. + The destructured value, or null. + True if the value could be destructured under this policy. + + + + Applied during logging to add additional information to log events. + + + + + Enrich the log event. + + The log event to enrich. + Factory for creating new properties to add to the event. + + + + Provides filtering of the log event stream. + + + + + Returns true if the provided event is enabled. Otherwise, false. + + The event to test. + True if the event is enabled by this filter. If false + is returned, the event will not be emitted. + + + + Creates log event properties from regular .NET objects, applying policies as + required. + + + + + Construct a with the specified name and value. + + The name of the property. + The value of the property. + If true, and the value is a non-primitive, non-array type, + then the value will be converted to a structure; otherwise, unknown types will + be converted to scalars, which are generally stored as strings. + + + + + Supports the policy-driven construction of s given + regular .NET objects. + + + + + Create a given a .NET object and destructuring + strategy. + + The value of the property. + If true, and the value is a non-primitive, non-array type, + then the value will be converted to a structure; otherwise, unknown types will + be converted to scalars, which are generally stored as strings. + The value. + + + + A destination for log events. + + + + + Emit the provided log event to the sink. + + The log event to write. + + + + Determine how a simple value is carried through the logging + pipeline as an immutable . + + + + + If supported, convert the provided value into an immutable scalar. + + The value to convert. + The converted value, or null. + True if the value could be converted under this policy. + + + + The core Serilog logging pipeline. A must + be disposed to flush any events buffered within it. Most application + code should depend on , not this class. + + + + + Create a logger that enriches log events via the provided enrichers. + + Enricher that applies in the context. + A logger that will enrich log events as specified. + + + + Create a logger that enriches log events via the provided enrichers. + + Enrichers that apply in the context. + A logger that will enrich log events as specified. + + + + Create a logger that enriches log events with the specified property. + + The name of the property. Must be non-empty. + The property value. + If true, the value will be serialized as a structured + object if possible; if false, the object will be recorded as a scalar or simple array. + A logger that will enrich log events as specified. + + + + Create a logger that marks log events as being from the specified + source type. + + Type generating log messages in the context. + A logger that will enrich log events as specified. + + + + Create a logger that marks log events as being from the specified + source type. + + Type generating log messages in the context. + A logger that will enrich log events as specified. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + + + + + + Determine if events at the specified level will be passed through + to the log sinks. + + Level to check. + True if the level is enabled; otherwise, false. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + + + Write an event to the log. + + The event to write. + + + + Write a log event with the level. + + Message template describing the event. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Uses configured scalar conversion and destructuring rules to bind a set of properties to a + message template. Returns false if the template or values are invalid (ILogger + methods never throw exceptions). + + Message template describing an event. + Objects positionally formatted into the message template. + The internal representation of the template, which may be used to + render the as text. + Captured properties from the template and . + + MessageTemplate template; + IEnumerable<LogEventProperty> properties>; + if (Log.BindMessageTemplate("Hello, {Name}!", new[] { "World" }, out template, out properties) + { + var propsByName = properties.ToDictionary(p => p.Name, p => p.Value); + Console.WriteLine(template.Render(propsByName, null)); + // -> "Hello, World!" + } + + + + + Uses configured scalar conversion and destructuring rules to bind a property value to its captured + representation. + + True if the property could be bound, otherwise false (ILogger + The name of the property. Must be non-empty. + The property value. + If true, the value will be serialized as a structured + object if possible; if false, the object will be recorded as a scalar or simple array. + The resulting property. + methods never throw exceptions). + + + + Close and flush the logging pipeline. + + + + + Dynamically controls logging level. + + + + + Create a at the initial + minimum level. + + The initial level to which the switch is set. + + + + The current minimum level, below which no events + should be generated. + + + + + Indicates that the marked method logs data using a message template and (optional) arguments. + The name of the parameter which contains the message template should be given in the constructor. + + + + [LoggerMethod("messageTemplate")] + public void Information(string messageTemplate, params object[] propertyValues) + { + // Do something + } + + public void Foo() + { + Information("Hello, {Name}!") // Warning: Non-existing argument in message template. + } + + + + + + Initializes a new instance of the class. + + Name of the message template parameter. + + + + Gets the name of the message template parameter. + + The name of the message template parameter. + + + + Forwards log events to another logging pipeline. Copies the events so + that mutations performed on the copies do not affect the originals. + + The properties dictionary is copied, however the values within + the dictionary (of type are expected to + be immutable. + + + + A base class for visitors that rewrite the value with modifications. For example, implementations + might remove all structure properties with a certain name, apply size/length limits, or convert scalar properties of + one type into scalar properties of another. + + + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value of an unsupported type. Returns the value unchanged. + + Operation state. + The value to visit. + The result of visiting . + + + + An abstract base class for visitors that walk data in the + format. Subclasses, by + overriding appropriate methods, may search for, transform, + or print the value structures being visited. + + + Stateless, designed to accommodate allocation-free visiting of multiple + values by the same visitor instance. + + The type of a state object passed through + the visiting process. + The type of the result generated by visiting + a node. + + + + Visit the root node type. This method delegates to + a concrete Visit*Value() method appropriate for the value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value of an unsupported type. + + Operation state. + The value to visit. + The result of visiting . + + + + May be thrown by log event sinks when a failure occurs. Should not be used in cases + where the exception would propagate out to callers. + + + + + Construct a to communicate a logging failure. + + A message describing the logging failure. + + + + A simple source of information generated by Serilog itself, + for example when exceptions are thrown and caught internally. + + + + + The output mechanism for self-log messages. + + + SelfLog.Out = Console.Error; + + + + + Set the output mechanism for self-log messages. + + A synchronized to which + self-log messages will be written. + + + + Set the output mechanism for self-log messages. + + An action to invoke with self-log messages. + // ReSharper disable once MemberCanBePrivate.Global + + + + Clear the output mechanism and disable self-log events. + + // ReSharper disable once MemberCanBePrivate.Global + + + + Write a message to the self-log. + + Standard .NET format string containing the message. + First argument, if supplied. + Second argument, if supplied. + Third argument, if supplied. + + The name is historical; because this is used from third-party sink packages, removing the "Line" + suffix as would seem sensible isn't worth the breakage. + + + + + A value represented as a mapping from keys to values. + + + + + Create a with the provided . + + The key-value mappings represented in the dictionary. + + + + + The dictionary mapping. + + + + + Render the value to the output. + + The output. + A format string applied to the value, or null. + A format provider to apply to the value, or null to use the default. + . + + + + Descriptive aliases for . + + These do not appear as members of the enumeration + as duplicated underlying values result in issues when presenting + enum values with . + + + + The least significant level of event. + + + + + The most significant level of event. + + + + + A log event. + + + + + Construct a new . + + The time at which the event occurred. + The level of the event. + An exception associated with the event, or null. + The message template describing the event. + Properties associated with the event, including those presented in . + + + + The time at which the event occurred. + + + + + The level of the event. + + + + + The message template describing the event. + + + + + Render the message template to the specified output, given the properties associated + with the event. + + The output. + Supplies culture-specific formatting information, or null. + + + + Render the message template given the properties associated + with the event, and return the result. + + Supplies culture-specific formatting information, or null. + + + + Properties associated with the event, including those presented in . + + + + + An exception associated with the event, or null. + + + + + Add a property to the event if not already present, otherwise, update its value. + + The property to add or update. + + + + + Add a property to the event if not already present. + + The property to add. + + + + + Remove a property from the event, if present. Otherwise no action + is performed. + + The name of the property to remove. + + + + Specifies the meaning and relative importance of a log event. + + + + + Anything and everything you might want to know about + a running block of code. + + + + + Internal system events that aren't necessarily + observable from the outside. + + + + + The lifeblood of operational intelligence - things + happen. + + + + + Service is degraded or endangered. + + + + + Functionality is unavailable, invariants are broken + or data is lost. + + + + + If you have a pager, it goes off when one of these + occurs. + + + + + A property associated with a . + + + + + Construct a with the specified name and value. + + The name of the property. + The value of the property. + + + + + + The name of the property. + + + + + The value of the property. + + + + + Test to determine if it is a valid property name. + + The name to check. + True if the name is valid; otherwise, false. + + + + The value associated with a . Divided into scalar, + sequence and structure values to direct serialization into various formats. + + + + + Render the value to the output. + + The output. + A format string applied to the value, or null. + A format provider to apply to the value, or null to use the default. + . + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Formats the value of the current instance using the specified format. + + + The value of the current instance in the specified format. + + The format to use.-or- A null reference (Nothing in Visual Basic) to use + the default format defined for the type of the implementation. + The provider to use to format the value.-or- A null reference + (Nothing in Visual Basic) to obtain the numeric format information from the current locale + setting of the operating system. 2 + + + + Represents a message template passed to a log method. The template + can subsequently render the template in textual form given the list + of properties. + + + + + Represents the empty message template. + + + + + Construct a message template using manually-defined text and property tokens. + + The text and property tokens defining the template. + + + + Construct a message template using manually-defined text and property tokens. + + The full text of the template; used by Serilog internally to avoid unneeded + string concatenation. + The text and property tokens defining the template. + + + + Similar to , but faster. + + + + + The raw text describing the template. + + + + + Render the template as a string. + + The string representation of the template. + + + + The tokens parsed from the template. + + + + + Convert the message template into a textual message, given the + properties matching the tokens in the message template. + + Properties matching template tokens. + Supplies culture-specific formatting information, or null. + The message created from the template and properties. If the + properties are mismatched with the template, the template will be + returned with incomplete substitution. + + + + Convert the message template into a textual message, given the + properties matching the tokens in the message template. + + Properties matching template tokens. + The message created from the template and properties. If the + properties are mismatched with the template, the template will be + returned with incomplete substitution. + Supplies culture-specific formatting information, or null. + + + + A property value corresponding to a simple, scalar type. + + + + + Construct a with the specified + value. + + The value, which may be null. + + + + The value, which may be null. + + + + + Render the value to the output. + + The output. + A format string applied to the value, or null. + A format provider to apply to the value, or null to use the default. + . + + + + Determine if this instance is equal to . + + The instance to compare with. + True if the instances are equal; otherwise, false. + + + + Get a hash code representing the value. + + The instance's hash code. + + + + A value represented as an ordered sequence of values. + + + + + Create a with the provided . + + The elements of the sequence. + + + + + The elements of the sequence. + + + + + Render the value to the output. + + The output. + A format string applied to the value, or null. + A format provider to apply to the value, or null to use the default. + . + + + + A value represented as a collection of name-value properties. + + + + + Construct a with the provided properties. + + Optionally, a piece of metadata describing the "type" of the + structure. + The properties of the structure. + + + + + A piece of metadata describing the "type" of the + structure, or null. + + + + + The properties of the structure. + + Not presented as a dictionary because dictionary construction is + relatively expensive; it is cheaper to build a dictionary over properties only + when the structure is of interest. + + + + Render the value to the output. + + The output. + A format string applied to the value, or null. + A format provider to apply to the value, or null to use the default. + . + + + + Predicates applied to log events that can be used + + + + + Matches events from the specified source type. + + The source type. + A predicate for matching events. + + + + Matches events from the specified source type or namespace and + nested types or namespaces. + + A dotted source type or namespace identifier. + A function that matches log events emitted by the source. + + + + Matches events with the specified property attached, + regardless of its value. + + The name of the property to match. + A predicate for matching events. + + + + Matches events with the specified property value. + + The name of the property to match. + The property value to match; must be a scalar type. + Null is allowed. + A predicate for matching events. + + + + Matches events with the specified property value. + + The name of the property to match. + A predicate for testing + The type of scalar values to match. + A predicate for matching events. + + + + Implements the {Level} element. + can now have a fixed width applied to it, as well as casing rules. + Width is set through formats like "u3" (uppercase three chars), + "w1" (one lowercase char), or "t4" (title case four chars). + + + + + A that supports the Serilog + message template format. Formatting log events for display + has a different set of requirements and expectations from + rendering the data within them. To meet this, the formatter + overrides some behavior: First, strings are always output + as literals (not quoted) unless some other format is applied + to them. Second, tokens without matching properties are skipped + rather than being written as raw text. + + + + + Construct a . + + A message template describing the + output messages. + Supplies culture-specific formatting information, or null. + + + + Format the log event into the output. + + The event to format. + The output. + + + + This method will apply only upper or lower case formatting, not fixed width + + + + + Describes the properties available in standard message template-based + output format strings. + + + + + The message rendered from the log event. + + + + + The timestamp of the log event. + + + + + The level of the log event. + + + + + A new line. + + + + + The exception associated with the log event. + + + + + The properties of the log event. + + + + + Create properties from the provided log event. + + The log event. + A dictionary with properties representing the log event. + + + + Create properties from the provided log event. + + The log event. + The output template. + A dictionary with properties representing the log event. + + + + Formats log events in a textual representation. + + + + + Format the log event into the output. + + The event to format. + The output. + + + + Formats log events in a simple JSON structure. Instances of this class + are safe for concurrent access by multiple threads. + + + + + Construct a . + + A string that will be written after each log event is formatted. + If null, will be used. + If true, the message will be rendered and written to the output as a + property named RenderedMessage. + Supplies culture-specific formatting information, or null. + + + + Construct a . + + If true, the properties of the event will be written to + the output without enclosing braces. Otherwise, if false, each event will be written as a well-formed + JSON object. + A string that will be written after each log event is formatted. + If null, will be used. Ignored if + is true. + If true, the message will be rendered and written to the output as a + property named RenderedMessage. + Supplies culture-specific formatting information, or null. + + + + Format the log event into the output. + + The event to format. + The output. + + + + Adds a writer function for a given type. + + The type of values, which handles. + The function, which writes the values. + + + + Writes out individual renderings of attached properties + + + + + Writes out the values of individual renderings of attached properties + + + + + Writes out the attached properties + + + + + Writes out the attached properties values + + + + + Writes out the attached exception + + + + + (Optionally) writes out the rendered message + + + + + Writes out the message template for the logevent. + + + + + Writes out the log level + + + + + Writes out the log timestamp + + + + + Writes out a structure property + + + + + Writes out a sequence property + + + + + Writes out a dictionary + + + + + Writes out a json property with the specified value on output writer + + + + + Allows a subclass to write out objects that have no configured literal writer. + + The value to be written as a json construct + The writer to write on + + + + Perform simple JSON string escaping on . + + A raw string. + A JSON-escaped version of . + + + + Converts Serilog's structured property value format into JSON. + + + + + Construct a . + + When serializing structured (object) values, + the property name to use for the Serilog field + in the resulting JSON. If null, no type tag field will be written. The default is + "_typeTag". + + + + Format as JSON to . + + The value to format + The output + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Write a literal as a single JSON value, e.g. as a number or string. Override to + support more value types. Don't write arrays/structures through this method - the + active destructuring policies have already indicated the value should be scalar at + this point. + + The value to write. + The output + + + + Write a valid JSON string literal, escaping as necessary. + + The string value to write. + The output. + + + + Formats log events as a raw dump of the message template and properties. + + + + + Format the log event into the output. + + The event to format. + The output. + + + + The core Serilog logging API, used for writing log events. + + + var log = new LoggerConfiguration() + .WriteTo.Console() + .CreateLogger(); + + var thing = "World"; + log.Information("Hello, {Thing}!", thing); + + + The methods on (and its static sibling ) are guaranteed + never to throw exceptions. Methods on all other types may. + + + + + Create a logger that enriches log events via the provided enrichers. + + Enricher that applies in the context. + A logger that will enrich log events as specified. + + + + Create a logger that enriches log events via the provided enrichers. + + Enrichers that apply in the context. + A logger that will enrich log events as specified. + + + + Create a logger that enriches log events with the specified property. + + The name of the property. Must be non-empty. + The property value. + If true, the value will be serialized as a structured + object if possible; if false, the object will be recorded as a scalar or simple array. + A logger that will enrich log events as specified. + + + + Create a logger that marks log events as being from the specified + source type. + + Type generating log messages in the context. + A logger that will enrich log events as specified. + + + + Create a logger that marks log events as being from the specified + source type. + + Type generating log messages in the context. + A logger that will enrich log events as specified. + + + + Write an event to the log. + + The event to write. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + + + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + + + Determine if events at the specified level will be passed through + to the log sinks. + + Level to check. + True if the level is enabled; otherwise, false. + + + + Write a log event with the level. + + Message template describing the event. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Uses configured scalar conversion and destructuring rules to bind a set of properties to a + message template. Returns false if the template or values are invalid (ILogger + methods never throw exceptions). + + Message template describing an event. + Objects positionally formatted into the message template. + The internal representation of the template, which may be used to + render the as text. + Captured properties from the template and . + + MessageTemplate template; + IEnumerable<LogEventProperty> properties>; + if (Log.BindMessageTemplate("Hello, {Name}!", new[] { "World" }, out template, out properties) + { + var propsByName = properties.ToDictionary(p => p.Name, p => p.Value); + Console.WriteLine(template.Render(propsByName, null)); + // -> "Hello, World!" + } + + + + + Uses configured scalar conversion and destructuring rules to bind a property value to its captured + representation. + + True if the property could be bound, otherwise false (ILogger + The name of the property. Must be non-empty. + The property value. + If true, the value will be serialized as a structured + object if possible; if false, the object will be recorded as a scalar or simple array. + The resulting property. + methods never throw exceptions). + + + + An optional static entry point for logging that can be easily referenced + by different parts of an application. To configure the + set the Logger static property to a logger instance. + + + Log.Logger = new LoggerConfiguration() + .WithConsoleSink() + .CreateLogger(); + + var thing = "World"; + Log.Logger.Information("Hello, {Thing}!", thing); + + + The methods on (and its dynamic sibling ) are guaranteed + never to throw exceptions. Methods on all other types may. + + + + + The globally-shared logger. + + + + + + Resets to the default and disposes the original if possible + + + + + Create a logger that enriches log events via the provided enrichers. + + Enricher that applies in the context. + A logger that will enrich log events as specified. + + + + Create a logger that enriches log events via the provided enrichers. + + Enrichers that apply in the context. + A logger that will enrich log events as specified. + + + + Create a logger that enriches log events with the specified property. + + A logger that will enrich log events as specified. + + + + Create a logger that marks log events as being from the specified + source type. + + Type generating log messages in the context. + A logger that will enrich log events as specified. + + + + Create a logger that marks log events as being from the specified + source type. + + Type generating log messages in the context. + A logger that will enrich log events as specified. + + + + Write an event to the log. + + The event to write. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Objects positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + + + Determine if events at the specified level will be passed through + to the log sinks. + + Level to check. + True if the level is enabled; otherwise, false. + + + + Write a log event with the level. + + Message template describing the event. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Uses configured scalar conversion and destructuring rules to bind a set of properties to a + message template. Returns false if the template or values are invalid (ILogger + methods never throw exceptions). + + Message template describing an event. + Objects positionally formatted into the message template. + The internal representation of the template, which may be used to + render the as text. + Captured properties from the template and . + + MessageTemplate template; + IEnumerable<LogEventProperty> properties>; + if (Log.BindMessageTemplate("Hello, {Name}!", new[] { "World" }, out template, out properties) + { + var propsByName = properties.ToDictionary(p => p.Name, p => p.Value); + Console.WriteLine(template.Render(propsByName, null)); + // -> "Hello, World!" + } + + + + + Uses configured scalar conversion and destructuring rules to bind a property value to its captured + representation. + + True if the property could be bound, otherwise false (ILogger + The name of the property. Must be non-empty. + The property value. + If true, the value will be serialized as a structured + object if possible; if false, the object will be recorded as a scalar or simple array. + The resulting property. + methods never throw exceptions). + + + + Configuration object for creating instances. + + + + + Configures the sinks that log events will be emitted to. + + + + + Configures sinks for auditing, instead of regular (safe) logging. When auditing is used, + exceptions from sinks and any intermediate filters propagate back to the caller. Most callers + should use instead. + + + Not all sinks are compatible with transactional auditing requirements (many will use asynchronous + batching to improve write throughput and latency). Sinks need to opt-in to auditing support by + extending , though the generic + method allows any sink class to be adapted for auditing. + + + + + Configures the minimum level at which events will be passed to sinks. If + not specified, only events at the + level and above will be passed through. + + Configuration object allowing method chaining. + + + + Configures enrichment of s. Enrichers can add, remove and + modify the properties associated with events. + + + + + Configures global filtering of s. + + + + + Configures destructuring of message template parameters. + + + + + Apply external settings to the logger configuration. + + + + + Create a logger using the configured sinks, enrichers and minimum level. + + The logger. + To free resources held by sinks ahead of program shutdown, + the returned logger may be cast to and + disposed. + + + + A structure representing the alignment settings to apply when rendering a property. + + + + + Initializes a new instance of . + + The text alignment direction. + The width of the text, in characters. + + + + The text alignment direction. + + + + + The width of the text. + + + + + Defines the direction of the alignment. + + + + + Text will be left-aligned. + + + + + Text will be right-aligned. + + + + + Instructs the logger on how to store information about provided + parameters. + + + + + Convert known types and objects to scalars, arrays to sequences. + + + + + Convert all types to scalar strings. Prefix name with '$'. + + + + + Convert known types to scalars, destructure objects and collections + into sequences and structures. Prefix name with '@'. + + + + + Parses message template strings into sequences of text or property + tokens. + + + + + Parse the supplied message template. + + The message template to parse. + A sequence of text or property tokens. Where the template + is not syntactically valid, text tokens will be returned. The parser + will make a best effort to extract valid property tokens even in the + presence of parsing issues. + + + + An element parsed from a message template string. + + + + + Construct a . + + The token's start index in the template. + + + + The token's start index in the template. + + + + + The token's length. + + + + + Render the token to the output. + + Properties that may be represented by the token. + Output for the rendered string. + Supplies culture-specific formatting information, or null. + + + + A message template token representing a log event property. + + + + + Construct a . + + The name of the property. + The token as it appears in the message template. + The format applied to the property, if any. + The destructuring strategy applied to the property, if any. + + + + + Construct a . + + The name of the property. + The token as it appears in the message template. + The format applied to the property, if any. + The alignment applied to the property, if any. + The destructuring strategy applied to the property, if any. + The token's start index in the template. + + + + + The token's length. + + + + + Render the token to the output. + + Properties that may be represented by the token. + Output for the rendered string. + Supplies culture-specific formatting information, or null. + + + + The property name. + + + + + Destructuring strategy applied to the property. + + + + + Format applied to the property. + + + + + Alignment applied to the property. + + + + + True if the property name is a positional index; otherwise, false. + + + + + Try to get the integer value represented by the property name. + + The integer value, if present. + True if the property is positional, otherwise false. + + + + Determines whether the specified is equal to the current . + + + true if the specified object is equal to the current object; otherwise, false. + + The object to compare with the current object. 2 + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + 2 + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + A message template token representing literal text. + + + + + Construct a . + + The text of the token. + The token's start index in the template. + + + + + The token's length. + + + + + Render the token to the output. + + Properties that may be represented by the token. + Output for the rendered string. + Supplies culture-specific formatting information, or null. + + + + Determines whether the specified is equal to the current . + + + true if the specified object is equal to the current object; otherwise, false. + + The object to compare with the current object. 2 + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + 2 + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + The text of the token. + + + + + Apply upper or lower casing to when is provided. + Returns when no or invalid format provided + + The provided with formatting applied + + + + Writes the provided value to the output, applying direction-based padding when is provided. + + + + diff --git a/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/lib/net46/Serilog.dll b/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/lib/net46/Serilog.dll new file mode 100644 index 0000000000000000000000000000000000000000..06d8dbf51a92553545f0cb09c3547f13702bf708 GIT binary patch literal 111104 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 Lc}U)3 zlYZ@>T)TP7yu2frWvAwS01J=QCS$CRSc^^iWrSMPcCKD)(k~j+n)FKsXPflf181A` zdj!+92ZK}L|G%AF?61=PvyfnS;X2ezr5d>>&;&kRBWpA^LXh`04?McMgefrmD z-A{jLvmA`(s&ortJY5&h_TBl^o2yNLc~ z-h+XNJ_W1u0h1#C0j@Jo3r##2c!sTU03)8BzDHb!am>>`2Go(mJ~!BpU&Y%!z>iG( z2Y~gW8?aG454b_R3)mz+0&Ei}4fNwxA>#qJidldciuHgA@y&rg(Iw8y_lfySH2u7MT|93*H#i`kNNddx zh!+_iWcaj?IIlB&8_*}-WB7sZm(c%&@$7WMho+NeIiN14q*HCvnN!7_`OK+d{1f1Q zu_@zZ==?c@N)=}koX+qRhD#Wp&M?d{!mxwkMGS9ecqhZh7(T)9b%t*BMh4vb~5}b z!ySOSxE1<7F*>gUcqET%*uk(opYU@4ed6kTs_j}ppSXeXU5ww(_??X32Z+-u)(;IL z{VO;oyq)n5#ybIZv1bsqvX9|8gP+4Mk!=(AO)L|c@VzqnWzUn##EIfcz>(r^ zz%k+hz)9lA42O;_6EnqE$CcrCDt`fZns^&HinP?Ex0XK@3fHA--uD@Db zfcopjRe&MpG%zQ@oKEI!V@?-yZf8z6#Nc?DG7vtRwdl(9n^a~jlnb%QUj5nBv#L1HqjBjJSi}5=c?`HgQ#(NkS z7T3eDl3_i=1j9~??9j#d?TmLb{KLn2F_b^A~Qq5W}TZ~~Lb4D^=$#^y6^^7+# zo?v_%<6Vq*Gwfj~@~F;2hLsHK873HZG3;j8!|-Sx^+yD_6vIk}^$ZgXyBKye>|uB$ zKz$Yixc>v#GK^O;tY_FbfND-K-o>z+VGlzwkXvL}$*`Vbf?*fKZiYP!MLz2@tYlcv zFu`zpKDE`wcsIiyhGGzxVpz%09L)B|>vGWlAp|vsg$ze9tYlclu%2OpVHd-0hCK|$ zP`-ACMMJ6P`V)w=`vk%d;Lp5afgo|Z81@8j7VTyA!->;9{E+xTS@-bQ#HVFiA#p}9 ztYlclu%2OpVHd-rg;ZzdNu=L-(mw!uPC6vg#utt}BsPw(WLVEI!LW7bhGH7&Cm41y>}J@*P)z6A7*;Z@ zXP98PeLB_L#dtTv9)@BDmtt7Su%2OpVHd-0hCK|$Ox9;u$*`Vbf?*fKZiYP!#Vpom zSjn)SVS-^7!)}H>48X-yu4=_`C-p0f|Y09 zEY2wJ0^9{in%%(vS>DZf5AcSGJ!jI&Sbr8t6AZf;b~Ef@D9+~A*K*#)Fu|~kVK>7b zhN6M9ul1x~$*^9+4a83{>}J@*P(+AdzmcU3dl-r)u7_bI!+M4ZhFuIrGwU#{WLVEI z!LW;AH^agf(yU}y&oIHTi=k-cdKeb9vi~#Q#ju-U4@1#Lnr4)Aj>ZU@n+a~;LU1=; zFM-_P0)q1{B6#3pf=3es8!sieeLF$(GJ-`{5ZwJWf{oWQ|2pR1!2E9#Ja7}idEX+~ zh?i2Jwp$6BT?Dt^PH^`f1dHw@IPWgT?_r!_Q{sZRRPw-WdubrZuu6?Mj)34EQ zGCr^#w?DNPr`4sM<7@VP!?(-#fbX#HRbNi}^z?b@E7Q+OzaV{k`i}IkrT;Dcl#H`7 zZpipS#v>U|Wqgp~%Ph<+&s>zbHgiknC7C-j-^=_sGnCbm_0_CvvmVTPA*(0rovcr? zhGZ9KPszR^`vm{V{!{#C_|Nhu{8##K^#7;-HUInm;+)EyWjT#GJ9BQ$Ih^y?9AEB$ z+@ZO{bBl7Ta%*ze=eFhEllwsKGr42(n)9~h?aF%~@4395ytnh-&-*0L7Z@983~UKp z6!=!)w!oc%9|Rr?d>Ej=-ZAi>iM#4HevvUv_;3d(M+^~pxEnP9_rFdMrMM4wGVa5T z#htG*Q6$ELnt&ZnIXIKSnF~%eIJie7P8UQl_vt8K9T-D;%SD9hm`;ySTP20!fa3;J^_faPFB-R+ZA<%vkSg z2BtT=_{-DjDx}WkGcHiL^bUF&-@=EyLx+E)17>6As|!EAb+H!yqG1P{1N=wu8(lmE z&(Xz?MLys@+{xAPi||7MAI2V8#|cgl@Le$+@IBn^)WturYu0hUtQb&eC4jm%8qm?R3D4w3UFDYO4UR&{hLprL6(nshx!@{f2f9a7(WP zZUe$5dI)$rpe{D+4S-wpFyK~wJ>dCz1aO zfcF6EVxSQN9AvZuPB*py&M-OvXBrm(E-)?vTx47VSZ8zshKy~18;q|4o@ZPRxXIW7 z7&EQ{ywJEB@M7Z{+)LhWtT2{~-$uCE@{lxseb*hE78K1Ud=vpLP{sH*^x>zo3&4 z2kdIVCsA9c_!%@i#WT>vd*SW*fWLxfr+5LHo#Hq4Lco`xd8s%I%}d4apn0iy)vf_N z3e8K!8_>K|yk(yT_7k`50c5w`v+r{7PC4hg2=63NhG`EXS?PY)>Z3?2-46#~- zaL#f*TG=74#Xa&p@YBb{)8ct}WSUl}m1vW-MOvr!b?qkYcI|uGUhNU>N$uC#A?-Eo zU2T#+Utg-9p?B(6=r`jRP~OtZjIS7`IoKR&)|er)+3YZ{GJk8HV6CxQtZmly)`Qls zthcNzyU3noH`tficiT_fC#0=TyEN^)X|Jb!nl{W=<4gFi^zHL?``+-q@B6DSo_=ro zPtt#yemMQTbUWjOjFB1D85d_A#XHoZXZMWfm5Pfe!ETpH+mNIRN%b3Qg zFw;0eW_p}hgQvC-eZ{ZY4i#7vseFa_4>r?uMNbD!mYgmseWX7}=~pRvmC~!D z`6WufQ_-DDzf+ z=Mz`-*N`H*fAE)Hwl>T@{k5~HRmHrf^U!mj`N`Jbdrz`#G zN`H>huTt_VrC+V+YNcPT^lOy8#4e~F?mQTmrC{i~Gz)k=P~(!WO0*C_pKl>QA$|3)RhQR(ke^e&~pOX=UH z^lw-4+m-$uioQeX-=XyHR{HlS`8`ViK1JWB^zT#pKUDe;D*1y-{~<*`r1T$B`j066 zN0t0hrT>_sA5;2|DgCFE{?khSw9@~%qJOURf3EbOSNgwJ@?R_c7Zv@Y(tlCuA5!`+ zEBVVx{}n~QqV!);`mZbfHEB*JC{s&6_fztm_(H|=P50(B$O8*~9 z{tu=9iK0JI`kyHM3RC*&98>yfl_~wS%9MUut>|jdQc_f05F^M9D8v`kjjIRQjDt|8k|jL&0hh#uT%2t zl>QBhzCr2Vp!9E6`nM|itxEqkMc=0MZ&UhrD*d~Z{4S+`x1#S>`gbe+A1M7jO1?+w z|4`9CRQf+u`umjr!%F_J(tkwJk0|{|l>XyN{|P03Lg_!H=%>pW23WV81osm` zi{fmq7-8L0N%TlduG7W*oh!<%-{3DY#R1pJLcu4q8HP1vQ66;0Y?e5Q&`+BEFT zX9KSUJ{R~)!2cWgVc@R>mJdEEGdPh8p&oT26;kT~A=L2z?^^W)sz8|$7!LL7LYUkMRh|T!i zXg?zEv`^IDwS!u^F-BXE_OQ4y?H%!WT2MQbwp#Pyj&7+hq}^#>uI&f@Q{el3_lf+B zhw=G9jLisX6EmI_FJ%5ir#>vnnxrT2#9Sil4|;yaDUAO&=-0DO)ZWN`M_B%lHqhUK z=XKkRO|!1Tm|+wPjsoeS0)Kd#%eWYlyc-iLM}(T4+&$33WhR5mU1p>gwi2 zVr@;Kj_RgREGC&$c{wT1?Wm20T4L*3qs@_)_1pmS*N5YE^IM{kh7H7<$h@)!r%_3B z7paokXb1YZIUJ4GwytalHHElmT&8#Pl8NRgQo#k0mPY65Lh(pz%aU+>Lu+G<+a!hF z#kmyqZ9$|d9_D5yPGUt=$w;!3OwMnP#Hlu^)XNskOm=>LOM7!T8d}>Fp1r=VZb_)E zwsl^lfw~oncFb=IH-}r|vGU1IbBwsgcG=}qNP+seIvR-D~B$)quxN_9IHbNrznJ4r?AL{)oZ1jE9esNk;mGD5lJqIO2yKK8FXjXMwx zhvMPIt?SpTAz&`K10xH=@n!Atw)Xh)XlomsA`<2SW!VBaT8Kx)EmJ<-G1!twOQgBI zd2x7ixQRQ=lEtl|R41v5#lp>Nn^d*3cyE(&NuCm7*2-{GxFPOX&Esd(28_2L+SLle8Lt*K*PB#LgMG+Phc)sgrHRe6W%`e!uPNY~XSt>1A*sHr_X zL4=~~sg7un(pMhIqasH@{p&=!iq&ubb1BI_dIC}b(E%tqxC@#JQ? z6LNsKPBWp7DNmeGYUL#8V@l@IC`}~s@uNXX#gju70M+=_*a2wniF?22%xaal_fmbxa2Cs-E1oxiC))D($>*-R5B z3Krtx{LPp>&QxW?uLy6U)qvzqm*8li7KLIPR)*umUmS_?x6_cKQ|56w&0{i6MP1z% z%wa;C>#!WQgqoT<@WWm;E%8YcMeRg#GtV>x&BIs+q@QW1#1lz;{Amb<{wIa3I3-b0 zwPJ+<)=x~60_qoQxKV_uK29->YWWNwhXkRP0vAQ;nwE8~qq2`fnE88%SI zHTWdQHj~&bO-wp3*na$Gfa4Y^3t3(nu9`Ks?;Tn_3$-hGm5{v6bOa6Ns9aOh+3sx39`xdF@T(nP#T1rd%a1njt{R%Mmqj8zLepaF7QB0Ywee0ax+!pWX!*19R!7M@2 z5^iY}YL4+DD7_j%>@zl%VkJUB>v}jf?JKe7t3Eq{6EVs;=itbJ#YI&qqaO!?b)kl^ zSP{nDz&9c(653_a)fjJLj`F4Wk#3}GS~X$%W?NS8tvDNU_zg@h|#0i#eJt>%`Pzcn6iiQ&4Iw?8pc3JL|Nq+vs-1&GpfVncPPVMAEdhBm?yEt|1(5HcXT zi8NAo(cfNB;M|MyddjR~ZLJDlsm@zMO_aNH;?GIA#A>7mOMgm{=4Q z7KK_G!GTqXB188tRD}?Tm2>Z)teTVytN?Ja)tsjILYbL$1e|a@eLbuYnp%^>8kiJW8 zZKgbq6_%~zuLcf`jG}w;9GIziD}SN?I1^@+{KoYpm*Y)Qu>EGfnqJQQNak$VRj~pG zwm5Yt_2hw%<5CRjWT9kSfgZ}OjEa-a@hh7!xwiAP^^)9NWAeCGn!IImC>ja1#H%qe zafU0ZLv8#mr!5&zoDq($ZN;~f3MYe6nMA{gz416Qp}0#oa=_v~z*;CAX~DrEM_7d2 zNCQSwgy}3XmDT17=V5uGHAu8k@kYnDxzoMEf|!d__})Br;oeL(L9ehN>RS1%*KMJW zu7q+rtTjl;!(v`|Z9Ao?bEB?yi#fXl6_62C*<84fQKlA{ zut*LE#4dLopE0{6Uy9h&-b!8K#GE=1X{d_Fqmi}k;P#maNl`Bo$j->YO)9zADq6@~ zN?kcELA`k%Ya~UzERqyBp|my<_f}Oy2gk4>+j9w4Nra4KA?Ny&oLU?ggyRb+)85h= z-Ix?OBeW>eh-2R*-(A*|ET=2D{}P5{ll%1*()kM=^K&BknOe?7WWBzXVD2?UBb?(V zg`6BAJB`t?3G7-XxpRt@Uyb;AHV zi5Tu1h{d6p-0dw}#}kSY0_4Pk(gFJJlOz&TEx>XOz_p6y*z(Xf-xZkKK@kT#6XMM6 zKtd_+)VZ02jFKc>LdPUh&3pIUX+Q;oG8Oqqadjx#Lf_6nOOIp;-4>A3NhTzx(?ZpF zYOJ-z%f*d#o`l$4u8m1dx*G_-eN1(=c~Vi_+{5*FgehyK+Yy6Brbhf|#muqf~JYSyXBB-ibn zBt5;747Wb2Vr3XPDc=!M+Uov@q#C)IhKOj3h*i;uXkB|Ag@tA698r#Am@!>Bj*JKxd8X)2 zmQ)O*x<)*1L4JYusUs_+X)W*2-Mib(21ZVW%NwaEOu5BuSzP<36D|(Mii&w zxC)0#Zni4o&cje_9@iczsVW@`Hg(jr;HeLIO6sF2m=?zoN~cbl@2NE>y*`x>r&qHf zl`r*qxuyA#D&)zL%98qC_vufb%5!cosBN<}jI2mb;#74hLG+=ef=(-Vv+XSm`kIV<0S z5Oz|HNjC0xt#s1;B-c4v!=oU})~%pZQjg3DtVtGUWJ%H~O<8r4E4PDmq>AGNSSKj~ zkB%gl;o+@b5;90l3vRk4m7U6y99c2%pXinjAMhuoVdu_;JG+vpMH!_%2*vz$9^urW z$}bsLsiojsOf+*5FzAs%M&)r6qZkg#2^m*sGmN{LB~wfA99cNZsM}px#5rYaRZ^8% zv5@-ImU={vhXrvEvRR&AcMa9aEkv6_u3X3ti zmm{NPl8n0o>P>AcnvVmpJBy8*QH7imICtFC>lWa7c+d-1>%9Z$vN&6t?UJ-IB&oI} zio1V~QZ+VaQGrv#C^7@ABKW3T2?|Y~Had@n;(SlZGDn zE-f>%x$U?u1F2jB1f=wYVFw*yQ5np2FHQZYt?AEpKh|dPQ#mLSQOKiJMTD8Z$9sulX?`KSVhGxGFWwcEZ*9jWROmh zs-eqBlD({(DqIoTlGH@B67z94vCmM!UmI}S41ziYh?G0&uEg`4nG+3?OPl-bM46+8 zSujfljsDcU&obdD7x@GSr<$=cIiJ}kV|$6mImV#X%hg;~{rM2d7mFMV` z8m0`cj9`*YDFzM~y{tMpoKo(zq;>(D!`{1>sMWdu6_Ytz@nlWYuNTMxM8G z@Wjb=b@2_6y_Ail0E5fO%&ebIj4aLK@}SOv~)}~HO1T$I67I7gTvc$vLD6T z7@z9UZFua@Bib=6&?UPOxqT8tM_C{6Jd92`}yhZzV&?^n@}+CvJx2{S>&Zb3;~cAlU`5`N1Duaj0{iIumtB z^7wDDnC;nhJ98)5J(-}e9y*9wM#ryJadIwfdYLb?Eg`**4rUd@y@jA?L?MN74lN^+ z;w0yI3VR*j1?5(7I7a98xQT=12f6Tk+|TDsSYAAwmQEz-oE#GkNI#jFvtVPjh5y1^ z#5{EaZ`rzaMDidjd~tYPT&#$!-w?;Dycjbg99-+ z^!R!17p?SPWVm0nx__119;ZIh!vlS9R9xiFI`i@*W$VT&P8$qh=jKJq~|xMn(6olWaVI%zT`QtwgRD z$31DRLr7xcBA!H@c}@=<^VCnq$doO}B0OnJkCrYB$NTcRpY&ig;;*{(l1yy)Ko%*P zdsDNINZm>7&F4QG6m3{ST4Fdep;eU5PAJA>-4gLQ-z&lr=sXn03&)l?Hi?_VOObau z!IE+?mbnOyJs7WxDun(l(cO=+nN$%6r&~<0l}onbpqUTHXd4x$(wp7#a+#(SwhRq% z%S&73_o{dUp)pC}9-?}TT&4<~PxY4vtq*Ti4^CrL@mRU=-c(tp4uajhN$JR3k8%vh zDSB(9K7&CI^HSGUaXF}bZHhxz9Hl=;Y@FL6&wlakOnT2n)9rUWI44a`={4V(rfrs! zRLLhf@i-Md@Pq-SOjhD_y2kt34m?NgCT%dKV%GM@#P!iVmvHJc2&#m0NY`J%|!INC!&k)ja#%GA!`}Ln8C*vc9bhjmhujB_YBI~4KorlBl z@JJ0ktw|@J^!K8o4(Azs&rnpg(C|>Ehd&e|d%AminY?*u@4E+_X`a-^BcS|rT@+&# z#f>l|f;H=w;$mQn!!}vriF6(58;m9Xi=ZoTj3!*0wt5k6;O} zX~CZwAcc#g7cm@g(QPnkA3m!FQ~oi7q{yl@F^SU|zSCcdr^}+N+UO9-<)uFQBs^yk z9l|@Qq%G+PHd)j;2XQ%0m~|O+NS|_4>Dr0j$5C+s-dtFSw;9F(Pr>H`yleL&ynDA0 zZ_^8b+km$uI+Aio3h}uJufmn(R^WY#4fsS5l)`vVVlCc>*aplg;nY=)x|;Bx!}rv5 zima*4l{sY^QEQazkE{CoDV@2QYi@_0NNlU-0@Q6hN`+TAuE&4Wtx_=>)o+1n4Bu_6 zwHcMR;&qPLwxiR9xD44vJbeo)gqJ|lH*s6=-3lo6)}qGV+9V}2;P+_rV)(|If!cAG z54DSuCQnbQxu$iHu1DKZ)J~dIUYyv>Wg;+qJ3iyk9-c|Zr%7mI!qA99PQx(+R}w+F z4bY)$X=Rf~!RdfZ8~@q$%z&;OD5|RwbwfY#>vLhCIrzoRz80U24z@Etj>hmyn|R0N z7VZd{*x`6PcOl-c89|px9);OwsJfd$QH>{s6mSc0vSS#d z)P}Cm2-3)7I}NNEuML$W-U1$VA?ZOebgB*i;qe;q$xp~MRJM@Il6B>%&wyqO6tzuW zLnGba=u^2k%2RKg%PkXHX0o)%>pc`&UhkpMMtg_icz&W~do@M2chJOYvK@KHI`pU= zS3+s!48vUp ztx_R!3SsjO$Y@0HR_Q!B`>K?!JA}xW{(c@bs0V813@3}xsD)r7WnU3wSJKz!n4g>I>r>)UzDrld(cw+kpAF7V`WyzFv+*!@V_-e=mVNXd{CsF0X=-DpMf?RGv+}yk9v?c50dqe(RVvxMh#>&7$cEJ5Ot@^Z}ihx4cTgz ztwv4INvGFCGiJ<(Y(8+2MiAfW^iA_h7z-d<08Np$0M>#%(urcs*bLcb?&oIcQa@!> z2WB)vM!q7_8dX2(TlO;o8F`RMBS`&}-{_~ch56)-)JIw?Wgk(KMK%y=1gVeoE&E7T zq)`%S>r@|!;y%KTbHP7Dte|h$alXW0LtHg%I9DtLpT1WS2Ky}qpCGOr_M>ka!_~}R zjna_Ac2yFC-Bv)KAiiO@70?C-n^l3o0CRdV_(U-l^v>Zv9-Ffi7TbanWDi_%PO66s zixMJX(JU7yuEf>T+D)@YuIFw}|x{bRxMh;Enj9G_nY#gTeqdz`HV#bzsGOdDTvwCXYf4kJVz`rPVZkO?LbS<==Q|~Faqg7X~Q8Ws@^B&kDv8xISjsa-t zl8d+uE0n9su$nr=PAVxAFzRrNx)3tBOfHi_Hg%ZlRcNn=Ua9Bu$+RS++@+otzHr~5 zoHP;jkEZhm^w&vZ$ejxDNhXQZFG@LNt)%Dl_yREz?Z7CRGBMc*Q;AS@O0BfOr7jA+ zTcRX0ndUmSb82*YE1ia}OH@$!qO{1HFp=|7J#vucf=Smw;f$6{^fKM4Q{;G)6!dw` z7wdBfOAn=N9cWS7Cbd3~gAb-&$^~qtvK%GeBHNqFi@{V6g$q1-gKNXH0*s3R=~*Nf148ijM*Pa8oGoe;;PbtSLM{44$(e}6pI zDoHK#nRZ&8YHzu@a4cHLwsLGrq2BQ==~L84sY8i9;c;A3D_zmJ)b{^{PqdCx3@GQ=-Ra5eXn>i zYIM$(#CY$5;Mnar#^oJ54UD5JM)z%j_6c(Es1L5@7&*W+gffIs!0`rPC%7Sa&*@K> z0!jZNrccP**k1zj*@=g|2Dt~J-pS>)_oCy?_&kek11;mU98lKily%1Fcy&mxpwZoe z(Uj+OeG?aINtCQa;HPV+1+ol3(L%PP{bVg5B?Vz5Uge)tZ{p|FoAf#Lu=D&}{hRVR z^`?GKy$WRRqYAZ^D{%F+cb3PkeUn(Z3?@^L-oZzn`9!@tgbT={VyMyUtNkU%MTsbp#=`=xCy z9YBx<9WNw98-?IxOJwY%6Cm5D>774(cFrb`D`ieuh&IA#Mdky%Him0e$nP6YNRM_p zbi74NMe>^ER+1JnT0~lKh)nI%0f%!WN_{8ZR(zsDJLlhNg#w)u!uk(hat9|?eUaL| zwH`Mx;-EzaMImm#`ujKLX5GB>JD30E#yeiXrD0pInT49>vjFn)3DpVsnXVxiSOX>9 z&JS$T0`+Dgewhz+0q9kreT9Mq1L%|>ka*FiS`tUn^8<;O^g!Z1J%h0UknLqzXFeAk zAh^B(B8{s}+>dWmm$*NN=={9I)hN9mg+Qa13rC#7@!$8 z`e_f)GSW1M1)a_sbTu6t28pE=>ZDA)Ac=;{^$idiX(llTfB`8k)~^rH(uLshA~VuSn^s>#TrxvW}?T@>VX#O^aaw= z0?lYp4|KK#5=R4_!k3YYQ71zW6Bc@!IF^sDOWF%r_Li#mDC|N`GeA&>BHS}2I;Otg zf_Whyp!sMFFih=PXh_x=NE{@iw6izx7s)fz(5tQ7@eYi9;;Zn2PAU*c>?p|9WuH_H zEFOlDM7Lp2(u9^@mD<6jI?{;0BhY~^Qe_?b;67Id{xG3aXF77YdtsPCb}~)Cj(MG- zG@Xx3(2z#>M?;nZZR3IzSkf-Pk!_{yPhUu9Z zhNJG^n3fahyn^lO_rndyB;MLWT3Fq*PTBaqlNr2nBGrVY+;v{DNc$huN0ajh^Eh5DCd zqT7yUt&ZcTz?SXvVz3dNW-$9{k)s4anXmZlw?jHME&Sv(iI5 zwszzNY)hAd7ZzCDMH>MH0UB#f5GzQbUQiG$u+k9!uXiT6ZzvB_=cc{`WTDj#Unb_b zGj=DYVNz0%?DTl1ayu2nI(c2|G=--7eKhYo1D)+MPEfd%bD1x+6Uzn#3HlF(DI%`P z1*@}*4d5>btO*vt(|YtX=FJ@+^HNXai`8#aA!Kjxx}6L-x8Rc1&;jI0&=v(tpyangYH!qYA`=t z2Cf6nW>fq@@lCEejj?E`3(4i z5B)>8{Nxr!8qh%Ec>`08zS6PS$xA`gK1+x|=ha!l)ctv#*CK()_1P@;(V|FtJ`)by zNMOT|G=vZ*M8YPJBSr#2yF5RgPzn|d?$JzlRe9w6h7f+tDm5hU83i!veUytSG&{}k z2SL(AZp1PY=zKy&X=)8?VWYBHBV{OLyhbbl1T)yJxE#;Cy%etAmJvr)PNU^7I4LbX z*#uQ0+oEpcXT%$ESr58gnFTcBi-bebxsJd08h#|r6iFV6FHx|GC6WM%_NiyzhQ0pa(vH$Lc3FGL2&NvxShegJ!=qrhH5 zo*)E1;D;03??@OS$^CEwc9Sf)2UiQ1$xchNe7eu@*=Z)c$k1*0vwwIRFOZlnm@qUd z7&7#nCJI{c!>bV*3S?U3TEwqb3&&HSnd9UUR0<#TiGopLFJI(Nnwtd$$a#49_B(U@ zyEHjEe~Orvj$y!v;|I9WW%$i^2Qck1BFx$kZ|?xru(Y~_S<j0-cn}d77M78d zT&+Gc%?bt@bsfN$DMRuw;X|%W!5Lo|6^uuEuBO6mI*g6c3UpdDD`6M}BFe^)pA2B9nlMpGK|vM<2o}S#w%6y& zNwcXSi2J#Q>NIv#k3qaBO*-DXxGt>78dO7fAaNj&=%NvN ziPJLI4fnfPw~HNcv91&!>Gb`d_O3oSuIsAbw~|+@uhr_IIF7qkUpq<0#*zG1`ys8d z-I&^$IFs70rDWtpVD0YPwM=Z;Sdvp^U}j%S+fkd4!1#}TU@!xnaZ56lK@6I~&_Yc} z3je^+fi#6`Is()tGff&9GElete&^oz-mdI2ogse!Q`!68{l4d(d+xdCo_pW9$*w?5 z!s?-!VEja{|92EGH2sJd=t5uz_$*$G$4H1JyEv8QAnCCT$Um|ESWjDvU0>F73A*=6 z3_O>}yg_DG0=JjRwFJDa1ApswNjlUnb&x+uwi3D$(Q662gz}?=(uG%UA??KoQqCib z7^qY9fbu{Dn{m$PJ=N+W?((+Wh50ESk;xR0-9C3M0&p;qZ$lZJ7Vz!!&VU1 zg{&qNa|257WwmubidyY-qNpUv6{W~RYBeD%LhaRyOqSovA)o^_?^;DI;B)m=@NoYg zT^M}CIM-|VZ33ta*LCi}!0R2#3lh&>a*4EjP=>!*LZ`(en1TIc}kE8auWL#AoHTCU?IG!Rbw0fb;7BX1zf z9}rf&knCw|L!pZaG7J1qfGxzV6oe9p7ZND3wwFfrOW<{!zm33ioD(4B0Ic4)FyuR6 ze+ya!T7XcAh?vdQjb>4j2P;H9uXD|U7BsF-C?Wc9a`yLcBvGDO1E8`%f@NI&(?W^< zbEZbWE;ah~PMMJaR{c^efaa1+NdBh?2C%LrO@IzCq}3M(X;-7^f6_NnDjAw?i#7;B@PN{Hs*jpvhYFNqOBlF zGu2u{DnpDq;tfP#CL^XX=TcZYTUY9$!Y%DFJm5bzx<8{@d6Lgk|M|>M-ON3dKD+XRk9;@#XNk_Y;?G@p z{KeP0zc>A*Z$A5;lU?4ukGrq7|NHLl?>xSD>E*w9=1XTDyXT7&-?q+fPxbx%rLQbG zTVH(O`UgMK^Oyg!b>L=YZ|*C<_3`B`7w_79?3<6hxaWG;lW&dfI=A!drv|4#@oVGx zy>Bk4rw)C+XV1+?Ub{!tu3r4;>m89sH?{G2Xo|{Kz2T=1>TYe`JZn5)+|{^Iy1mi! z-yI_DYTOR(ia^<|e)`8PVz(On(NNv)xN`k(|NosjTSC}%y}I>5yQA&9#)Gc`1_-0x>fn3z;B~MK881D?WcXr|5Nr7lea5V^Q z5tdz2XVjKk{X7QDZRTBS1Y3qh)R5YEo;BHg%+4M|McgJKSo#cX$HVXvOQ%(``Rt+1 zes4Z|)pr!giw>3P{kT@hQ>qn=T(y#PwvHmj?N24Pt|67BT7QVYmbl$VS%4Gjdf-?M z9BY(b5p_HWSfNb86@s5=jYGg|jl&g-$570COMF|B=|r2+BMvj^K)1w#5P?;a$gY9* z0{K3Kd|2HGLr$l~!R2;Kymt)0ab%R0FCz5%236Lt+DzZPl5CA{+m>YHG9OQOFvaI( zEz_l)T6PW^fTb%Ma0398m>#}u*s;LFi^bEM@P6G){*-R z9jgpdZSi;ey+DfOTbJh=W8Y@%djufPb5~*vT$K1#;-f*XV@eOD3LYpx9VfhW)K?53 zi7;d}bgdZ|Di6Xi2ea94N?!$mx{FzyZsLjn@qN}RkGtubsu~oml^ENkLtMU#I^Pp`sueW`&%^hy^y`ci&|ymBm>= z!P2T^I;ac!vCw%*DCLT2>ZT-63JSCRMM0@ifCOmrVxcQ3C1|;e>6Zjj8{-uMtdHT_WaofuMOvcFgk+%{5@v)?9Bc0zc>1lB+Y)DX)U;su$Z;` z$lu$PMjSQKePCp(ZOUK`3r1i~qM=!)!sJSuGFVGRSW7ixE!B)Q6=F@h03P(c0VaSo zEUp{SluB*H8YCNyMQViwYg~pW+qgm_>QW)gX17+hbXQeV<1i8(j{7qyDq z%Ol}k>vUSUAbbPvB^zx;L7W`WEWFbgMY=g0k07ZrF2H)nfCYe*Y&Q^3LjB%?^8m?I zqJy1~l7FDVSWBvRoN-f(vmN3hY6e?@(T1s_cRc09=`heC6YCk*8&QOpYK@fa1tb$t zcA@$!XbneF5-q&ij&iVP30IPlWagURZb6Dr+1*%qk8Z1$C{R=f656E{Q2PQo2U-9Z zkV8^vaNiJjk}1rHl?(*v6}WnXQnhe`5DaK&T_hJtiED2{&9_jqXy-Xx*-?CVnRhqd z*pxy2H$vA<6GzxEzPKfeqL@?T1niqG1^|H2MMa?wqoPo|F0*WEQcW#BJW@X)(_DmJ zZa^pX7yxeB-(mk<5#o=$polHE(CV^)a+S0|iV-Ypf+RIG)Acg@q%jCA2x?!_BZRCj zsa(60-5hr&BAM1l76PwCKwDxrjzrxb-P8sFV(q)bAy2y@d`qeo4h&v^KzTk-zEEEV z&WIckm+X_97HdwhXmGP6NuhMo8O)%WjMSZzU~k+%gH#&mq{w#Qm8XZcgQ7xgUhM=& zWmj;lcLam5zSO}M=naTYfMsY9cnyLVyOa!cOdv8Y2s(z!>lmv@O~Ds>Zct=84cIW| zxwCOCa(+2-UXPrYBj*xG4rPPUqUFdB>O)5Y@^6b|N@V(pE(9f0969jxVQ53ZW(;*g zt2lw;D-($5hQK==YFnFALP?~e_OEl~A%|}F8m4=;Z(aB^Tz%ZOK)~Bwf-yr8TJaf+ zN|C8^j!gg?p94soQ|CCRO8>2PC}Q(|6tt>G2@%+-5h$U3gaQW*M34tCB7t`UG3c>% zje<@H4R%_)dl_R==@7t;w0-d0OYE3Puq`QZMc!KFYM$h{*ys=mDV?AP;I4GLoacai zst40|NR{FX7&t<~IkEicCZYm}SAzmX@=5~{;I?+UDa~4tX04kA=u$BZ`@zplL4aNZ z>{DZ?S0-&tj0kz7TQJYqn8gA|6!Tz@E;gJgNn!?lTQOr`cIBiNNS~%6k8}gAuJk|9 z#Syy_VIyBw;2D#bq2GBbbX&PjfP}=Ru>o$OTOK z#23#M$p!;jH4h(P)4E=4rz3}vDDGl5vrKAMMzf=U6B7qP1Ph7l~gf!^OVATXb z(suezme{D(HZ`G#qNLO<6KuaOulgnAP1y6j0brp%T1rE|fh{*JtaP@|;e}ql#BCcn z0JMpu7aS!dGejMb*#N8u1ex}u)7YGbUGWsX*K`fCCXxWXYp%PE44IrLECZ_`hr3(4 zb%>K97mc^R1k|Iwdf1bzQ#}o6QLCt>u`nW&<>t*I=aFa))T_fALc)}!II5%t7_FF= zHB{?%95Up?YE4ke-!76WpAU30ZGT*l|~%wJ#bH1U{LmXIClcm^+RN-#3PND$v70y#19>7mqg2P5>X6FCh`<)5&We>|`jGzQZ?Gxs_Au5B2%+3UJPIhTLA5qTB0&vgs#kOY|c{7^od%VaZ5 zDdBYCS1XTrnQYC==5nP>rBJK7wdzQ=TFYiD8F$1j*RpP*=nfb1pVUNx^a zQX9$?hTTdbH-xyX>y_PNZ8%$Uy=n=5ubitCz08PLt`)p|X((T+qn<>$(JfiZ* zk*!p6Ze@75md)peYQyeO*(()_L)Aicq*To0N3!{>S3@S(9WLdHUdgRxD>W~lua<}M zKu)2YDdtA<)d~>&3qY_JAoytYe2w-XaYOG*05+6*k&FljB$|mE=%>9K6Avr)+yW(NzNZ>f+M0ecp)^_;ly6r4BtZQ+1|k zD%vTTo7HDD;56;)z;-Nd)Np3cIw$8~N)`skst!o^$!GU-tbC)^)2E$s)j2P=@;v9%v{M55c!#PJ^nx+) zh05x$TB`oFgMkfT=WNYsvb67%=bf3kG7OBvs4qI>e^Q$x=2QVqMQr;M128m=ZgR>X z0M9u)Ep=CoK;16%$SIIY_&x_p*)@_W zqH%jHHO!8=^?rdt0cGRGaNBnPTe>!-z{?*4_K{uepV2(7T;1Y$xZvW{X<)tPoRy1O zgNA5g1@@=U&awxpu#L@jHTFP+`9^x(1w{j8<-1_T~nQWsjzZ!qqR9+8TT zAukvNXT?LH^s1#MfBYi$L|2uVHsD5teJ4+xz}+p4#@GUjd70b^cb})}{++5NxYV+~2>A>Sq zodvrv1~hL&oXv!+S2DnWxuOO8luGGW_&hdxV6=aD=X($R%=rF~KKHD(Z+HEdndAMtCoqO+ zZgFN}MzfcRne&wiLogG#+i${5TNBgO*<2xr89e8e)!@rftq;=egcUY9b~mI0yMY1m z1E)`a00!FCnVAai)vgZm(m4J1!+TK5M(~?T``_oW1mG>0W13;p(;G(4E#XY}Ab#U3 zmh!N(5d3*9;CkrQQGA@J&H0Sti@zf<%X0#6W3C4&{-pK0Kj3~d4p>Rn;Qc;RP%GX# z#suJX06z<*@{>jV?R^zx@>6q|Cc@v{in+!R%dgpJvai9Cf}~h%y^caHKo{ALxV5Cq zlE#I_IsGq(lMuiG48>)Tm!DXkk&SwO&j_&wrA6O4I@swy47(mK+$}OA2{1;b8nj`=K literal 0 HcmV?d00001 diff --git a/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/lib/net46/Serilog.xml b/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/lib/net46/Serilog.xml new file mode 100644 index 00000000..3da73e54 --- /dev/null +++ b/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/lib/net46/Serilog.xml @@ -0,0 +1,4499 @@ + + + + Serilog + + + + + Create properties based on an ordered list of provided values. + + The template that the parameters apply to. + Objects corresponding to the properties + represented in the message template. + A list of properties; if the template is malformed then + this will be empty. + + + + Implemented on types that apply settings to a logger configuration. + + + + + Apply the settings to the logger configuration. + + The logger configuration to apply settings to. + + + + Controls audit sink configuration. + + + + + Audit log events to the specified . + + The sink. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + Configuration object allowing method chaining. + + + + Audit log events to the specified . + + The sink. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + Configuration object allowing method chaining. + + + + Audit log events to a sub-logger, where further processing may occur. Events through + the sub-logger will be constrained by filters and enriched by enrichers that are + active in the parent. A sub-logger cannot be used to log at a more verbose level, but + a less verbose level is possible. + + An action that configures the sub-logger. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + Configuration object allowing method chaining. + + + + Audit log events to a sub-logger, where further processing may occur. Events through + the sub-logger will be constrained by filters and enriched by enrichers that are + active in the parent. A sub-logger cannot be used to log at a more verbose level, but + a less verbose level is possible. + + The sub-logger. This will not be shut down automatically when the + parent logger is disposed. + The minimum level for + events passed through the sink. + Configuration object allowing method chaining. + + + + Controls template parameter destructuring configuration. + + + + + Treat objects of the specified type as scalar values, i.e., don't break + them down into properties event when destructuring complex types. + + Type to treat as scalar. + Configuration object allowing method chaining. + + + + Treat objects of the specified type as scalar values, i.e., don't break + them down into properties event when destructuring complex types. + + Type to treat as scalar. + Configuration object allowing method chaining. + + + + When destructuring objects, transform instances with the provided policies. + + Policies to apply when destructuring. + Configuration object allowing method chaining. + + + + When destructuring objects, transform instances with the provided policy. + + Policy to apply when destructuring. + Configuration object allowing method chaining. + + + + When destructuring objects, transform instances of the specified type with + the provided function. + + Function mapping instances of + to an alternative representation. + Type of values to transform. + Configuration object allowing method chaining. + + + + + When destructuring objects, transform instances of the specified type with + the provided function, if the predicate returns true. Be careful to avoid any + intensive work in the predicate, as it can slow down the pipeline significantly. + + A predicate used to determine if the transform applies to + a specific type of value + Function mapping instances of + to an alternative representation. + Type of values to transform. + Configuration object allowing method chaining. + + + + + When destructuring objects, depth will be limited to 5 property traversals deep to + guard against ballooning space when recursive/cyclic structures are accidentally passed. To + increase this limit pass a higher value. + + The maximum depth to use. + Configuration object allowing method chaining. + + + + + When destructuring objects, string values can be restricted to specified length + thus avoiding bloating payload. Limit is applied to each value separately, + sum of length of strings can exceed limit. + + The maximum string length. + Configuration object allowing method chaining. + When passed length is less than 2 + + + + When destructuring objects, collections be restricted to specified count + thus avoiding bloating payload. Limit is applied to each collection separately, + sum of length of collection can exceed limit. + Applies limit to all including dictionaries. + + Configuration object allowing method chaining. + When passed length is less than 1 + + + + Controls enrichment configuration. + + + + + Specifies one or more enrichers that may add properties dynamically to + log events. + + Enrichers to apply to all events passing through + the logger. + Configuration object allowing method chaining. + + + + Specifies an enricher that may add properties dynamically to + log events. + + Enricher type to apply to all events passing through + the logger. + Configuration object allowing method chaining. + + + + Include the specified property value in all events logged to the logger. + + The name of the property to add. + The property value to add. + If true, objects of unknown type will be logged as structures; otherwise they will be converted using . + Configuration object allowing method chaining. + + + + Enrich log events with properties from . + + Configuration object allowing method chaining. + + + + + Controls filter configuration. + + + + + Filter out log events from the stream based on the provided filter. + + The filters to apply. + Configuration object allowing method chaining. + + + + Filter out log events from the stream based on the provided filter. + + The filters to apply. + Configuration object allowing method chaining. + + + + Filter out log events that match a predicate. + + Function that returns true when an event + should be excluded (silenced). + Configuration object allowing method chaining. + + + + Filter log events to include only those that match a predicate. + + Function that returns true when an event + should be included (emitted). + Configuration object allowing method chaining. + + + + Controls sink configuration. + + + + + Sets the minimum level at which events will be passed to sinks. + + The minimum level to set. + Configuration object allowing method chaining. + + + + Sets the minimum level to be dynamically controlled by the provided switch. + + The switch. + Configuration object allowing method chaining. + + + + Anything and everything you might want to know about + a running block of code. + + Configuration object allowing method chaining. + + + + Internal system events that aren't necessarily + observable from the outside. + + Configuration object allowing method chaining. + + + + The lifeblood of operational intelligence - things + happen. + + Configuration object allowing method chaining. + + + + Service is degraded or endangered. + + Configuration object allowing method chaining. + + + + Functionality is unavailable, invariants are broken + or data is lost. + + Configuration object allowing method chaining. + + + + If you have a pager, it goes off when one of these + occurs. + + Configuration object allowing method chaining. + + + + Override the minimum level for events from a specific namespace or type name. + + The (partial) namespace or type name to set the override for. + The switch controlling loggers for matching sources. + Configuration object allowing method chaining. + + + + Override the minimum level for events from a specific namespace or type name. + + The (partial) namespace or type name to set the override for. + The minimum level applied to loggers for matching sources. + Configuration object allowing method chaining. + + + + Allows additional setting sources to drive the logger configuration. + + + + + Apply external settings to the logger configuration. + + Configuration object allowing method chaining. + + + + Apply settings specified in the Serilog key-value setting format to the logger configuration. + + A list of key-value pairs describing logger settings. + Configuration object allowing method chaining. + + + + Controls sink configuration. + + + + + Write log events to the specified . + + The sink. + The minimum level for + events passed through the sink. + Configuration object allowing method chaining. + Provided for binary compatibility for earlier versions, + should be removed in 3.0. Not marked obsolete because warnings + would be syntactically annoying to avoid. + + + + Write log events to the specified . + + The sink. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + Configuration object allowing method chaining. + + + + Write log events to the specified . + + The sink. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + Configuration object allowing method chaining. + + + + Write log events to a sub-logger, where further processing may occur. Events through + the sub-logger will be constrained by filters and enriched by enrichers that are + active in the parent. A sub-logger cannot be used to log at a more verbose level, but + a less verbose level is possible. + + An action that configures the sub-logger. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + Configuration object allowing method chaining. + + + + Write log events to a sub-logger, where further processing may occur. Events through + the sub-logger will be constrained by filters and enriched by enrichers that are + active in the parent. A sub-logger cannot be used to log at a more verbose level, but + a less verbose level is possible. + + The sub-logger. This will not be shut down automatically when the + parent logger is disposed. + The minimum level for + events passed through the sink. + Configuration object allowing method chaining. + + + + Helper method for wrapping sinks. + + The parent sink configuration. + A function that allows for wrapping s + added in . + An action that configures sinks to be wrapped in . + Configuration object allowing method chaining. + + + + Holds ambient properties that can be attached to log events. To + configure, use the method. + + + Configuration: + + var log = new LoggerConfiguration() + .Enrich.FromLogContext() + ... + + Usage: + + using (LogContext.PushProperty("MessageId", message.Id)) + { + Log.Information("The MessageId property will be attached to this event"); + } + + + The scope of the context is the current logical thread, using AsyncLocal + (and so is preserved across async/await calls). + + + + Push a property onto the context, returning an + that must later be used to remove the property, along with any others that + may have been pushed on top of it and not yet popped. The property must + be popped from the same thread/logical call context. + + The name of the property. + The value of the property. + A handle to later remove the property from the context. + If true, and the value is a non-primitive, non-array type, + then the value will be converted to a structure; otherwise, unknown types will + be converted to scalars, which are generally stored as strings. + A token that must be disposed, in order, to pop properties back off the stack. + + + + Push an enricher onto the context, returning an + that must later be used to remove the property, along with any others that + may have been pushed on top of it and not yet popped. The property must + be popped from the same thread/logical call context. + + An enricher to push onto the log context + A token that must be disposed, in order, to pop properties back off the stack. + + + + + Push multiple enrichers onto the context, returning an + that must later be used to remove the property, along with any others that + may have been pushed on top of it and not yet popped. The property must + be popped from the same thread/logical call context. + + . + Enrichers to push onto the log context + A token that must be disposed, in order, to pop properties back off the stack. + + + + + Push enrichers onto the log context. This method is obsolete, please + use instead. + + Enrichers to push onto the log context + A token that must be disposed, in order, to pop properties back off the stack. + + + + + Obtain an enricher that represents the current contents of the . This + can be pushed back onto the context in a different location/thread when required. + + An enricher that represents the current contents of the . + + + + Constants used in the core logging pipeline and associated types. + + + + + The name of the property included in the emitted log events + when ForContext<T>() and overloads are + applied. + + + + + Adds a new property encricher to the log event. + + + + + Create a new property enricher. + + The name of the property. + The value of the property. + A handle to later remove the property from the context. + If true, and the value is a non-primitive, non-array type, + then the value will be converted to a structure; otherwise, unknown types will + be converted to scalars, which are generally stored as strings. + + + + + + Enrich the log event. + + The log event to enrich. + Factory for creating new properties to add to the event. + + + + Determine how, when destructuring, a supplied value is represented + as a complex log event property. + + + + + If supported, destructure the provided value. + + The value to destructure. + Recursively apply policies to destructure additional values. + The destructured value, or null. + True if the value could be destructured under this policy. + + + + Applied during logging to add additional information to log events. + + + + + Enrich the log event. + + The log event to enrich. + Factory for creating new properties to add to the event. + + + + Provides filtering of the log event stream. + + + + + Returns true if the provided event is enabled. Otherwise, false. + + The event to test. + True if the event is enabled by this filter. If false + is returned, the event will not be emitted. + + + + Creates log event properties from regular .NET objects, applying policies as + required. + + + + + Construct a with the specified name and value. + + The name of the property. + The value of the property. + If true, and the value is a non-primitive, non-array type, + then the value will be converted to a structure; otherwise, unknown types will + be converted to scalars, which are generally stored as strings. + + + + + Supports the policy-driven construction of s given + regular .NET objects. + + + + + Create a given a .NET object and destructuring + strategy. + + The value of the property. + If true, and the value is a non-primitive, non-array type, + then the value will be converted to a structure; otherwise, unknown types will + be converted to scalars, which are generally stored as strings. + The value. + + + + A destination for log events. + + + + + Emit the provided log event to the sink. + + The log event to write. + + + + Determine how a simple value is carried through the logging + pipeline as an immutable . + + + + + If supported, convert the provided value into an immutable scalar. + + The value to convert. + The converted value, or null. + True if the value could be converted under this policy. + + + + The core Serilog logging pipeline. A must + be disposed to flush any events buffered within it. Most application + code should depend on , not this class. + + + + + Create a logger that enriches log events via the provided enrichers. + + Enricher that applies in the context. + A logger that will enrich log events as specified. + + + + Create a logger that enriches log events via the provided enrichers. + + Enrichers that apply in the context. + A logger that will enrich log events as specified. + + + + Create a logger that enriches log events with the specified property. + + The name of the property. Must be non-empty. + The property value. + If true, the value will be serialized as a structured + object if possible; if false, the object will be recorded as a scalar or simple array. + A logger that will enrich log events as specified. + + + + Create a logger that marks log events as being from the specified + source type. + + Type generating log messages in the context. + A logger that will enrich log events as specified. + + + + Create a logger that marks log events as being from the specified + source type. + + Type generating log messages in the context. + A logger that will enrich log events as specified. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + + + + + + Determine if events at the specified level will be passed through + to the log sinks. + + Level to check. + True if the level is enabled; otherwise, false. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + + + Write an event to the log. + + The event to write. + + + + Write a log event with the level. + + Message template describing the event. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Uses configured scalar conversion and destructuring rules to bind a set of properties to a + message template. Returns false if the template or values are invalid (ILogger + methods never throw exceptions). + + Message template describing an event. + Objects positionally formatted into the message template. + The internal representation of the template, which may be used to + render the as text. + Captured properties from the template and . + + MessageTemplate template; + IEnumerable<LogEventProperty> properties>; + if (Log.BindMessageTemplate("Hello, {Name}!", new[] { "World" }, out template, out properties) + { + var propsByName = properties.ToDictionary(p => p.Name, p => p.Value); + Console.WriteLine(template.Render(propsByName, null)); + // -> "Hello, World!" + } + + + + + Uses configured scalar conversion and destructuring rules to bind a property value to its captured + representation. + + True if the property could be bound, otherwise false (ILogger + The name of the property. Must be non-empty. + The property value. + If true, the value will be serialized as a structured + object if possible; if false, the object will be recorded as a scalar or simple array. + The resulting property. + methods never throw exceptions). + + + + Close and flush the logging pipeline. + + + + + Dynamically controls logging level. + + + + + Create a at the initial + minimum level. + + The initial level to which the switch is set. + + + + The current minimum level, below which no events + should be generated. + + + + + Indicates that the marked method logs data using a message template and (optional) arguments. + The name of the parameter which contains the message template should be given in the constructor. + + + + [LoggerMethod("messageTemplate")] + public void Information(string messageTemplate, params object[] propertyValues) + { + // Do something + } + + public void Foo() + { + Information("Hello, {Name}!") // Warning: Non-existing argument in message template. + } + + + + + + Initializes a new instance of the class. + + Name of the message template parameter. + + + + Gets the name of the message template parameter. + + The name of the message template parameter. + + + + Forwards log events to another logging pipeline. Copies the events so + that mutations performed on the copies do not affect the originals. + + The properties dictionary is copied, however the values within + the dictionary (of type are expected to + be immutable. + + + + A base class for visitors that rewrite the value with modifications. For example, implementations + might remove all structure properties with a certain name, apply size/length limits, or convert scalar properties of + one type into scalar properties of another. + + + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value of an unsupported type. Returns the value unchanged. + + Operation state. + The value to visit. + The result of visiting . + + + + An abstract base class for visitors that walk data in the + format. Subclasses, by + overriding appropriate methods, may search for, transform, + or print the value structures being visited. + + + Stateless, designed to accommodate allocation-free visiting of multiple + values by the same visitor instance. + + The type of a state object passed through + the visiting process. + The type of the result generated by visiting + a node. + + + + Visit the root node type. This method delegates to + a concrete Visit*Value() method appropriate for the value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value of an unsupported type. + + Operation state. + The value to visit. + The result of visiting . + + + + May be thrown by log event sinks when a failure occurs. Should not be used in cases + where the exception would propagate out to callers. + + + + + Construct a to communicate a logging failure. + + A message describing the logging failure. + + + + A simple source of information generated by Serilog itself, + for example when exceptions are thrown and caught internally. + + + + + The output mechanism for self-log messages. + + + SelfLog.Out = Console.Error; + + + + + Set the output mechanism for self-log messages. + + A synchronized to which + self-log messages will be written. + + + + Set the output mechanism for self-log messages. + + An action to invoke with self-log messages. + // ReSharper disable once MemberCanBePrivate.Global + + + + Clear the output mechanism and disable self-log events. + + // ReSharper disable once MemberCanBePrivate.Global + + + + Write a message to the self-log. + + Standard .NET format string containing the message. + First argument, if supplied. + Second argument, if supplied. + Third argument, if supplied. + + The name is historical; because this is used from third-party sink packages, removing the "Line" + suffix as would seem sensible isn't worth the breakage. + + + + + A value represented as a mapping from keys to values. + + + + + Create a with the provided . + + The key-value mappings represented in the dictionary. + + + + + The dictionary mapping. + + + + + Render the value to the output. + + The output. + A format string applied to the value, or null. + A format provider to apply to the value, or null to use the default. + . + + + + Descriptive aliases for . + + These do not appear as members of the enumeration + as duplicated underlying values result in issues when presenting + enum values with . + + + + The least significant level of event. + + + + + The most significant level of event. + + + + + A log event. + + + + + Construct a new . + + The time at which the event occurred. + The level of the event. + An exception associated with the event, or null. + The message template describing the event. + Properties associated with the event, including those presented in . + + + + The time at which the event occurred. + + + + + The level of the event. + + + + + The message template describing the event. + + + + + Render the message template to the specified output, given the properties associated + with the event. + + The output. + Supplies culture-specific formatting information, or null. + + + + Render the message template given the properties associated + with the event, and return the result. + + Supplies culture-specific formatting information, or null. + + + + Properties associated with the event, including those presented in . + + + + + An exception associated with the event, or null. + + + + + Add a property to the event if not already present, otherwise, update its value. + + The property to add or update. + + + + + Add a property to the event if not already present. + + The property to add. + + + + + Remove a property from the event, if present. Otherwise no action + is performed. + + The name of the property to remove. + + + + Specifies the meaning and relative importance of a log event. + + + + + Anything and everything you might want to know about + a running block of code. + + + + + Internal system events that aren't necessarily + observable from the outside. + + + + + The lifeblood of operational intelligence - things + happen. + + + + + Service is degraded or endangered. + + + + + Functionality is unavailable, invariants are broken + or data is lost. + + + + + If you have a pager, it goes off when one of these + occurs. + + + + + A property associated with a . + + + + + Construct a with the specified name and value. + + The name of the property. + The value of the property. + + + + + + The name of the property. + + + + + The value of the property. + + + + + Test to determine if it is a valid property name. + + The name to check. + True if the name is valid; otherwise, false. + + + + The value associated with a . Divided into scalar, + sequence and structure values to direct serialization into various formats. + + + + + Render the value to the output. + + The output. + A format string applied to the value, or null. + A format provider to apply to the value, or null to use the default. + . + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Formats the value of the current instance using the specified format. + + + The value of the current instance in the specified format. + + The format to use.-or- A null reference (Nothing in Visual Basic) to use + the default format defined for the type of the implementation. + The provider to use to format the value.-or- A null reference + (Nothing in Visual Basic) to obtain the numeric format information from the current locale + setting of the operating system. 2 + + + + Represents a message template passed to a log method. The template + can subsequently render the template in textual form given the list + of properties. + + + + + Represents the empty message template. + + + + + Construct a message template using manually-defined text and property tokens. + + The text and property tokens defining the template. + + + + Construct a message template using manually-defined text and property tokens. + + The full text of the template; used by Serilog internally to avoid unneeded + string concatenation. + The text and property tokens defining the template. + + + + Similar to , but faster. + + + + + The raw text describing the template. + + + + + Render the template as a string. + + The string representation of the template. + + + + The tokens parsed from the template. + + + + + Convert the message template into a textual message, given the + properties matching the tokens in the message template. + + Properties matching template tokens. + Supplies culture-specific formatting information, or null. + The message created from the template and properties. If the + properties are mismatched with the template, the template will be + returned with incomplete substitution. + + + + Convert the message template into a textual message, given the + properties matching the tokens in the message template. + + Properties matching template tokens. + The message created from the template and properties. If the + properties are mismatched with the template, the template will be + returned with incomplete substitution. + Supplies culture-specific formatting information, or null. + + + + A property value corresponding to a simple, scalar type. + + + + + Construct a with the specified + value. + + The value, which may be null. + + + + The value, which may be null. + + + + + Render the value to the output. + + The output. + A format string applied to the value, or null. + A format provider to apply to the value, or null to use the default. + . + + + + Determine if this instance is equal to . + + The instance to compare with. + True if the instances are equal; otherwise, false. + + + + Get a hash code representing the value. + + The instance's hash code. + + + + A value represented as an ordered sequence of values. + + + + + Create a with the provided . + + The elements of the sequence. + + + + + The elements of the sequence. + + + + + Render the value to the output. + + The output. + A format string applied to the value, or null. + A format provider to apply to the value, or null to use the default. + . + + + + A value represented as a collection of name-value properties. + + + + + Construct a with the provided properties. + + Optionally, a piece of metadata describing the "type" of the + structure. + The properties of the structure. + + + + + A piece of metadata describing the "type" of the + structure, or null. + + + + + The properties of the structure. + + Not presented as a dictionary because dictionary construction is + relatively expensive; it is cheaper to build a dictionary over properties only + when the structure is of interest. + + + + Render the value to the output. + + The output. + A format string applied to the value, or null. + A format provider to apply to the value, or null to use the default. + . + + + + Predicates applied to log events that can be used + + + + + Matches events from the specified source type. + + The source type. + A predicate for matching events. + + + + Matches events from the specified source type or namespace and + nested types or namespaces. + + A dotted source type or namespace identifier. + A function that matches log events emitted by the source. + + + + Matches events with the specified property attached, + regardless of its value. + + The name of the property to match. + A predicate for matching events. + + + + Matches events with the specified property value. + + The name of the property to match. + The property value to match; must be a scalar type. + Null is allowed. + A predicate for matching events. + + + + Matches events with the specified property value. + + The name of the property to match. + A predicate for testing + The type of scalar values to match. + A predicate for matching events. + + + + Implements the {Level} element. + can now have a fixed width applied to it, as well as casing rules. + Width is set through formats like "u3" (uppercase three chars), + "w1" (one lowercase char), or "t4" (title case four chars). + + + + + A that supports the Serilog + message template format. Formatting log events for display + has a different set of requirements and expectations from + rendering the data within them. To meet this, the formatter + overrides some behavior: First, strings are always output + as literals (not quoted) unless some other format is applied + to them. Second, tokens without matching properties are skipped + rather than being written as raw text. + + + + + Construct a . + + A message template describing the + output messages. + Supplies culture-specific formatting information, or null. + + + + Format the log event into the output. + + The event to format. + The output. + + + + This method will apply only upper or lower case formatting, not fixed width + + + + + Describes the properties available in standard message template-based + output format strings. + + + + + The message rendered from the log event. + + + + + The timestamp of the log event. + + + + + The level of the log event. + + + + + A new line. + + + + + The exception associated with the log event. + + + + + The properties of the log event. + + + + + Create properties from the provided log event. + + The log event. + A dictionary with properties representing the log event. + + + + Create properties from the provided log event. + + The log event. + The output template. + A dictionary with properties representing the log event. + + + + Formats log events in a textual representation. + + + + + Format the log event into the output. + + The event to format. + The output. + + + + Formats log events in a simple JSON structure. Instances of this class + are safe for concurrent access by multiple threads. + + + + + Construct a . + + A string that will be written after each log event is formatted. + If null, will be used. + If true, the message will be rendered and written to the output as a + property named RenderedMessage. + Supplies culture-specific formatting information, or null. + + + + Construct a . + + If true, the properties of the event will be written to + the output without enclosing braces. Otherwise, if false, each event will be written as a well-formed + JSON object. + A string that will be written after each log event is formatted. + If null, will be used. Ignored if + is true. + If true, the message will be rendered and written to the output as a + property named RenderedMessage. + Supplies culture-specific formatting information, or null. + + + + Format the log event into the output. + + The event to format. + The output. + + + + Adds a writer function for a given type. + + The type of values, which handles. + The function, which writes the values. + + + + Writes out individual renderings of attached properties + + + + + Writes out the values of individual renderings of attached properties + + + + + Writes out the attached properties + + + + + Writes out the attached properties values + + + + + Writes out the attached exception + + + + + (Optionally) writes out the rendered message + + + + + Writes out the message template for the logevent. + + + + + Writes out the log level + + + + + Writes out the log timestamp + + + + + Writes out a structure property + + + + + Writes out a sequence property + + + + + Writes out a dictionary + + + + + Writes out a json property with the specified value on output writer + + + + + Allows a subclass to write out objects that have no configured literal writer. + + The value to be written as a json construct + The writer to write on + + + + Perform simple JSON string escaping on . + + A raw string. + A JSON-escaped version of . + + + + Converts Serilog's structured property value format into JSON. + + + + + Construct a . + + When serializing structured (object) values, + the property name to use for the Serilog field + in the resulting JSON. If null, no type tag field will be written. The default is + "_typeTag". + + + + Format as JSON to . + + The value to format + The output + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Write a literal as a single JSON value, e.g. as a number or string. Override to + support more value types. Don't write arrays/structures through this method - the + active destructuring policies have already indicated the value should be scalar at + this point. + + The value to write. + The output + + + + Write a valid JSON string literal, escaping as necessary. + + The string value to write. + The output. + + + + Formats log events as a raw dump of the message template and properties. + + + + + Format the log event into the output. + + The event to format. + The output. + + + + The core Serilog logging API, used for writing log events. + + + var log = new LoggerConfiguration() + .WriteTo.Console() + .CreateLogger(); + + var thing = "World"; + log.Information("Hello, {Thing}!", thing); + + + The methods on (and its static sibling ) are guaranteed + never to throw exceptions. Methods on all other types may. + + + + + Create a logger that enriches log events via the provided enrichers. + + Enricher that applies in the context. + A logger that will enrich log events as specified. + + + + Create a logger that enriches log events via the provided enrichers. + + Enrichers that apply in the context. + A logger that will enrich log events as specified. + + + + Create a logger that enriches log events with the specified property. + + The name of the property. Must be non-empty. + The property value. + If true, the value will be serialized as a structured + object if possible; if false, the object will be recorded as a scalar or simple array. + A logger that will enrich log events as specified. + + + + Create a logger that marks log events as being from the specified + source type. + + Type generating log messages in the context. + A logger that will enrich log events as specified. + + + + Create a logger that marks log events as being from the specified + source type. + + Type generating log messages in the context. + A logger that will enrich log events as specified. + + + + Write an event to the log. + + The event to write. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + + + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + + + Determine if events at the specified level will be passed through + to the log sinks. + + Level to check. + True if the level is enabled; otherwise, false. + + + + Write a log event with the level. + + Message template describing the event. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Uses configured scalar conversion and destructuring rules to bind a set of properties to a + message template. Returns false if the template or values are invalid (ILogger + methods never throw exceptions). + + Message template describing an event. + Objects positionally formatted into the message template. + The internal representation of the template, which may be used to + render the as text. + Captured properties from the template and . + + MessageTemplate template; + IEnumerable<LogEventProperty> properties>; + if (Log.BindMessageTemplate("Hello, {Name}!", new[] { "World" }, out template, out properties) + { + var propsByName = properties.ToDictionary(p => p.Name, p => p.Value); + Console.WriteLine(template.Render(propsByName, null)); + // -> "Hello, World!" + } + + + + + Uses configured scalar conversion and destructuring rules to bind a property value to its captured + representation. + + True if the property could be bound, otherwise false (ILogger + The name of the property. Must be non-empty. + The property value. + If true, the value will be serialized as a structured + object if possible; if false, the object will be recorded as a scalar or simple array. + The resulting property. + methods never throw exceptions). + + + + An optional static entry point for logging that can be easily referenced + by different parts of an application. To configure the + set the Logger static property to a logger instance. + + + Log.Logger = new LoggerConfiguration() + .WithConsoleSink() + .CreateLogger(); + + var thing = "World"; + Log.Logger.Information("Hello, {Thing}!", thing); + + + The methods on (and its dynamic sibling ) are guaranteed + never to throw exceptions. Methods on all other types may. + + + + + The globally-shared logger. + + + + + + Resets to the default and disposes the original if possible + + + + + Create a logger that enriches log events via the provided enrichers. + + Enricher that applies in the context. + A logger that will enrich log events as specified. + + + + Create a logger that enriches log events via the provided enrichers. + + Enrichers that apply in the context. + A logger that will enrich log events as specified. + + + + Create a logger that enriches log events with the specified property. + + A logger that will enrich log events as specified. + + + + Create a logger that marks log events as being from the specified + source type. + + Type generating log messages in the context. + A logger that will enrich log events as specified. + + + + Create a logger that marks log events as being from the specified + source type. + + Type generating log messages in the context. + A logger that will enrich log events as specified. + + + + Write an event to the log. + + The event to write. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Objects positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + + + Determine if events at the specified level will be passed through + to the log sinks. + + Level to check. + True if the level is enabled; otherwise, false. + + + + Write a log event with the level. + + Message template describing the event. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Uses configured scalar conversion and destructuring rules to bind a set of properties to a + message template. Returns false if the template or values are invalid (ILogger + methods never throw exceptions). + + Message template describing an event. + Objects positionally formatted into the message template. + The internal representation of the template, which may be used to + render the as text. + Captured properties from the template and . + + MessageTemplate template; + IEnumerable<LogEventProperty> properties>; + if (Log.BindMessageTemplate("Hello, {Name}!", new[] { "World" }, out template, out properties) + { + var propsByName = properties.ToDictionary(p => p.Name, p => p.Value); + Console.WriteLine(template.Render(propsByName, null)); + // -> "Hello, World!" + } + + + + + Uses configured scalar conversion and destructuring rules to bind a property value to its captured + representation. + + True if the property could be bound, otherwise false (ILogger + The name of the property. Must be non-empty. + The property value. + If true, the value will be serialized as a structured + object if possible; if false, the object will be recorded as a scalar or simple array. + The resulting property. + methods never throw exceptions). + + + + Configuration object for creating instances. + + + + + Configures the sinks that log events will be emitted to. + + + + + Configures sinks for auditing, instead of regular (safe) logging. When auditing is used, + exceptions from sinks and any intermediate filters propagate back to the caller. Most callers + should use instead. + + + Not all sinks are compatible with transactional auditing requirements (many will use asynchronous + batching to improve write throughput and latency). Sinks need to opt-in to auditing support by + extending , though the generic + method allows any sink class to be adapted for auditing. + + + + + Configures the minimum level at which events will be passed to sinks. If + not specified, only events at the + level and above will be passed through. + + Configuration object allowing method chaining. + + + + Configures enrichment of s. Enrichers can add, remove and + modify the properties associated with events. + + + + + Configures global filtering of s. + + + + + Configures destructuring of message template parameters. + + + + + Apply external settings to the logger configuration. + + + + + Create a logger using the configured sinks, enrichers and minimum level. + + The logger. + To free resources held by sinks ahead of program shutdown, + the returned logger may be cast to and + disposed. + + + + A structure representing the alignment settings to apply when rendering a property. + + + + + Initializes a new instance of . + + The text alignment direction. + The width of the text, in characters. + + + + The text alignment direction. + + + + + The width of the text. + + + + + Defines the direction of the alignment. + + + + + Text will be left-aligned. + + + + + Text will be right-aligned. + + + + + Instructs the logger on how to store information about provided + parameters. + + + + + Convert known types and objects to scalars, arrays to sequences. + + + + + Convert all types to scalar strings. Prefix name with '$'. + + + + + Convert known types to scalars, destructure objects and collections + into sequences and structures. Prefix name with '@'. + + + + + Parses message template strings into sequences of text or property + tokens. + + + + + Parse the supplied message template. + + The message template to parse. + A sequence of text or property tokens. Where the template + is not syntactically valid, text tokens will be returned. The parser + will make a best effort to extract valid property tokens even in the + presence of parsing issues. + + + + An element parsed from a message template string. + + + + + Construct a . + + The token's start index in the template. + + + + The token's start index in the template. + + + + + The token's length. + + + + + Render the token to the output. + + Properties that may be represented by the token. + Output for the rendered string. + Supplies culture-specific formatting information, or null. + + + + A message template token representing a log event property. + + + + + Construct a . + + The name of the property. + The token as it appears in the message template. + The format applied to the property, if any. + The destructuring strategy applied to the property, if any. + + + + + Construct a . + + The name of the property. + The token as it appears in the message template. + The format applied to the property, if any. + The alignment applied to the property, if any. + The destructuring strategy applied to the property, if any. + The token's start index in the template. + + + + + The token's length. + + + + + Render the token to the output. + + Properties that may be represented by the token. + Output for the rendered string. + Supplies culture-specific formatting information, or null. + + + + The property name. + + + + + Destructuring strategy applied to the property. + + + + + Format applied to the property. + + + + + Alignment applied to the property. + + + + + True if the property name is a positional index; otherwise, false. + + + + + Try to get the integer value represented by the property name. + + The integer value, if present. + True if the property is positional, otherwise false. + + + + Determines whether the specified is equal to the current . + + + true if the specified object is equal to the current object; otherwise, false. + + The object to compare with the current object. 2 + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + 2 + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + A message template token representing literal text. + + + + + Construct a . + + The text of the token. + The token's start index in the template. + + + + + The token's length. + + + + + Render the token to the output. + + Properties that may be represented by the token. + Output for the rendered string. + Supplies culture-specific formatting information, or null. + + + + Determines whether the specified is equal to the current . + + + true if the specified object is equal to the current object; otherwise, false. + + The object to compare with the current object. 2 + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + 2 + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + The text of the token. + + + + + Apply upper or lower casing to when is provided. + Returns when no or invalid format provided + + The provided with formatting applied + + + + Writes the provided value to the output, applying direction-based padding when is provided. + + + + diff --git a/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/lib/netstandard1.0/Serilog.dll b/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/lib/netstandard1.0/Serilog.dll new file mode 100644 index 0000000000000000000000000000000000000000..33bea6048bdf687b85e45b6a1ffe86e7e713be67 GIT binary patch literal 110592 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 literal 0 HcmV?d00001 diff --git a/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/lib/netstandard1.0/Serilog.xml b/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/lib/netstandard1.0/Serilog.xml new file mode 100644 index 00000000..3da73e54 --- /dev/null +++ b/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/lib/netstandard1.0/Serilog.xml @@ -0,0 +1,4499 @@ + + + + Serilog + + + + + Create properties based on an ordered list of provided values. + + The template that the parameters apply to. + Objects corresponding to the properties + represented in the message template. + A list of properties; if the template is malformed then + this will be empty. + + + + Implemented on types that apply settings to a logger configuration. + + + + + Apply the settings to the logger configuration. + + The logger configuration to apply settings to. + + + + Controls audit sink configuration. + + + + + Audit log events to the specified . + + The sink. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + Configuration object allowing method chaining. + + + + Audit log events to the specified . + + The sink. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + Configuration object allowing method chaining. + + + + Audit log events to a sub-logger, where further processing may occur. Events through + the sub-logger will be constrained by filters and enriched by enrichers that are + active in the parent. A sub-logger cannot be used to log at a more verbose level, but + a less verbose level is possible. + + An action that configures the sub-logger. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + Configuration object allowing method chaining. + + + + Audit log events to a sub-logger, where further processing may occur. Events through + the sub-logger will be constrained by filters and enriched by enrichers that are + active in the parent. A sub-logger cannot be used to log at a more verbose level, but + a less verbose level is possible. + + The sub-logger. This will not be shut down automatically when the + parent logger is disposed. + The minimum level for + events passed through the sink. + Configuration object allowing method chaining. + + + + Controls template parameter destructuring configuration. + + + + + Treat objects of the specified type as scalar values, i.e., don't break + them down into properties event when destructuring complex types. + + Type to treat as scalar. + Configuration object allowing method chaining. + + + + Treat objects of the specified type as scalar values, i.e., don't break + them down into properties event when destructuring complex types. + + Type to treat as scalar. + Configuration object allowing method chaining. + + + + When destructuring objects, transform instances with the provided policies. + + Policies to apply when destructuring. + Configuration object allowing method chaining. + + + + When destructuring objects, transform instances with the provided policy. + + Policy to apply when destructuring. + Configuration object allowing method chaining. + + + + When destructuring objects, transform instances of the specified type with + the provided function. + + Function mapping instances of + to an alternative representation. + Type of values to transform. + Configuration object allowing method chaining. + + + + + When destructuring objects, transform instances of the specified type with + the provided function, if the predicate returns true. Be careful to avoid any + intensive work in the predicate, as it can slow down the pipeline significantly. + + A predicate used to determine if the transform applies to + a specific type of value + Function mapping instances of + to an alternative representation. + Type of values to transform. + Configuration object allowing method chaining. + + + + + When destructuring objects, depth will be limited to 5 property traversals deep to + guard against ballooning space when recursive/cyclic structures are accidentally passed. To + increase this limit pass a higher value. + + The maximum depth to use. + Configuration object allowing method chaining. + + + + + When destructuring objects, string values can be restricted to specified length + thus avoiding bloating payload. Limit is applied to each value separately, + sum of length of strings can exceed limit. + + The maximum string length. + Configuration object allowing method chaining. + When passed length is less than 2 + + + + When destructuring objects, collections be restricted to specified count + thus avoiding bloating payload. Limit is applied to each collection separately, + sum of length of collection can exceed limit. + Applies limit to all including dictionaries. + + Configuration object allowing method chaining. + When passed length is less than 1 + + + + Controls enrichment configuration. + + + + + Specifies one or more enrichers that may add properties dynamically to + log events. + + Enrichers to apply to all events passing through + the logger. + Configuration object allowing method chaining. + + + + Specifies an enricher that may add properties dynamically to + log events. + + Enricher type to apply to all events passing through + the logger. + Configuration object allowing method chaining. + + + + Include the specified property value in all events logged to the logger. + + The name of the property to add. + The property value to add. + If true, objects of unknown type will be logged as structures; otherwise they will be converted using . + Configuration object allowing method chaining. + + + + Enrich log events with properties from . + + Configuration object allowing method chaining. + + + + + Controls filter configuration. + + + + + Filter out log events from the stream based on the provided filter. + + The filters to apply. + Configuration object allowing method chaining. + + + + Filter out log events from the stream based on the provided filter. + + The filters to apply. + Configuration object allowing method chaining. + + + + Filter out log events that match a predicate. + + Function that returns true when an event + should be excluded (silenced). + Configuration object allowing method chaining. + + + + Filter log events to include only those that match a predicate. + + Function that returns true when an event + should be included (emitted). + Configuration object allowing method chaining. + + + + Controls sink configuration. + + + + + Sets the minimum level at which events will be passed to sinks. + + The minimum level to set. + Configuration object allowing method chaining. + + + + Sets the minimum level to be dynamically controlled by the provided switch. + + The switch. + Configuration object allowing method chaining. + + + + Anything and everything you might want to know about + a running block of code. + + Configuration object allowing method chaining. + + + + Internal system events that aren't necessarily + observable from the outside. + + Configuration object allowing method chaining. + + + + The lifeblood of operational intelligence - things + happen. + + Configuration object allowing method chaining. + + + + Service is degraded or endangered. + + Configuration object allowing method chaining. + + + + Functionality is unavailable, invariants are broken + or data is lost. + + Configuration object allowing method chaining. + + + + If you have a pager, it goes off when one of these + occurs. + + Configuration object allowing method chaining. + + + + Override the minimum level for events from a specific namespace or type name. + + The (partial) namespace or type name to set the override for. + The switch controlling loggers for matching sources. + Configuration object allowing method chaining. + + + + Override the minimum level for events from a specific namespace or type name. + + The (partial) namespace or type name to set the override for. + The minimum level applied to loggers for matching sources. + Configuration object allowing method chaining. + + + + Allows additional setting sources to drive the logger configuration. + + + + + Apply external settings to the logger configuration. + + Configuration object allowing method chaining. + + + + Apply settings specified in the Serilog key-value setting format to the logger configuration. + + A list of key-value pairs describing logger settings. + Configuration object allowing method chaining. + + + + Controls sink configuration. + + + + + Write log events to the specified . + + The sink. + The minimum level for + events passed through the sink. + Configuration object allowing method chaining. + Provided for binary compatibility for earlier versions, + should be removed in 3.0. Not marked obsolete because warnings + would be syntactically annoying to avoid. + + + + Write log events to the specified . + + The sink. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + Configuration object allowing method chaining. + + + + Write log events to the specified . + + The sink. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + Configuration object allowing method chaining. + + + + Write log events to a sub-logger, where further processing may occur. Events through + the sub-logger will be constrained by filters and enriched by enrichers that are + active in the parent. A sub-logger cannot be used to log at a more verbose level, but + a less verbose level is possible. + + An action that configures the sub-logger. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + Configuration object allowing method chaining. + + + + Write log events to a sub-logger, where further processing may occur. Events through + the sub-logger will be constrained by filters and enriched by enrichers that are + active in the parent. A sub-logger cannot be used to log at a more verbose level, but + a less verbose level is possible. + + The sub-logger. This will not be shut down automatically when the + parent logger is disposed. + The minimum level for + events passed through the sink. + Configuration object allowing method chaining. + + + + Helper method for wrapping sinks. + + The parent sink configuration. + A function that allows for wrapping s + added in . + An action that configures sinks to be wrapped in . + Configuration object allowing method chaining. + + + + Holds ambient properties that can be attached to log events. To + configure, use the method. + + + Configuration: + + var log = new LoggerConfiguration() + .Enrich.FromLogContext() + ... + + Usage: + + using (LogContext.PushProperty("MessageId", message.Id)) + { + Log.Information("The MessageId property will be attached to this event"); + } + + + The scope of the context is the current logical thread, using AsyncLocal + (and so is preserved across async/await calls). + + + + Push a property onto the context, returning an + that must later be used to remove the property, along with any others that + may have been pushed on top of it and not yet popped. The property must + be popped from the same thread/logical call context. + + The name of the property. + The value of the property. + A handle to later remove the property from the context. + If true, and the value is a non-primitive, non-array type, + then the value will be converted to a structure; otherwise, unknown types will + be converted to scalars, which are generally stored as strings. + A token that must be disposed, in order, to pop properties back off the stack. + + + + Push an enricher onto the context, returning an + that must later be used to remove the property, along with any others that + may have been pushed on top of it and not yet popped. The property must + be popped from the same thread/logical call context. + + An enricher to push onto the log context + A token that must be disposed, in order, to pop properties back off the stack. + + + + + Push multiple enrichers onto the context, returning an + that must later be used to remove the property, along with any others that + may have been pushed on top of it and not yet popped. The property must + be popped from the same thread/logical call context. + + . + Enrichers to push onto the log context + A token that must be disposed, in order, to pop properties back off the stack. + + + + + Push enrichers onto the log context. This method is obsolete, please + use instead. + + Enrichers to push onto the log context + A token that must be disposed, in order, to pop properties back off the stack. + + + + + Obtain an enricher that represents the current contents of the . This + can be pushed back onto the context in a different location/thread when required. + + An enricher that represents the current contents of the . + + + + Constants used in the core logging pipeline and associated types. + + + + + The name of the property included in the emitted log events + when ForContext<T>() and overloads are + applied. + + + + + Adds a new property encricher to the log event. + + + + + Create a new property enricher. + + The name of the property. + The value of the property. + A handle to later remove the property from the context. + If true, and the value is a non-primitive, non-array type, + then the value will be converted to a structure; otherwise, unknown types will + be converted to scalars, which are generally stored as strings. + + + + + + Enrich the log event. + + The log event to enrich. + Factory for creating new properties to add to the event. + + + + Determine how, when destructuring, a supplied value is represented + as a complex log event property. + + + + + If supported, destructure the provided value. + + The value to destructure. + Recursively apply policies to destructure additional values. + The destructured value, or null. + True if the value could be destructured under this policy. + + + + Applied during logging to add additional information to log events. + + + + + Enrich the log event. + + The log event to enrich. + Factory for creating new properties to add to the event. + + + + Provides filtering of the log event stream. + + + + + Returns true if the provided event is enabled. Otherwise, false. + + The event to test. + True if the event is enabled by this filter. If false + is returned, the event will not be emitted. + + + + Creates log event properties from regular .NET objects, applying policies as + required. + + + + + Construct a with the specified name and value. + + The name of the property. + The value of the property. + If true, and the value is a non-primitive, non-array type, + then the value will be converted to a structure; otherwise, unknown types will + be converted to scalars, which are generally stored as strings. + + + + + Supports the policy-driven construction of s given + regular .NET objects. + + + + + Create a given a .NET object and destructuring + strategy. + + The value of the property. + If true, and the value is a non-primitive, non-array type, + then the value will be converted to a structure; otherwise, unknown types will + be converted to scalars, which are generally stored as strings. + The value. + + + + A destination for log events. + + + + + Emit the provided log event to the sink. + + The log event to write. + + + + Determine how a simple value is carried through the logging + pipeline as an immutable . + + + + + If supported, convert the provided value into an immutable scalar. + + The value to convert. + The converted value, or null. + True if the value could be converted under this policy. + + + + The core Serilog logging pipeline. A must + be disposed to flush any events buffered within it. Most application + code should depend on , not this class. + + + + + Create a logger that enriches log events via the provided enrichers. + + Enricher that applies in the context. + A logger that will enrich log events as specified. + + + + Create a logger that enriches log events via the provided enrichers. + + Enrichers that apply in the context. + A logger that will enrich log events as specified. + + + + Create a logger that enriches log events with the specified property. + + The name of the property. Must be non-empty. + The property value. + If true, the value will be serialized as a structured + object if possible; if false, the object will be recorded as a scalar or simple array. + A logger that will enrich log events as specified. + + + + Create a logger that marks log events as being from the specified + source type. + + Type generating log messages in the context. + A logger that will enrich log events as specified. + + + + Create a logger that marks log events as being from the specified + source type. + + Type generating log messages in the context. + A logger that will enrich log events as specified. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + + + + + + Determine if events at the specified level will be passed through + to the log sinks. + + Level to check. + True if the level is enabled; otherwise, false. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + + + Write an event to the log. + + The event to write. + + + + Write a log event with the level. + + Message template describing the event. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Uses configured scalar conversion and destructuring rules to bind a set of properties to a + message template. Returns false if the template or values are invalid (ILogger + methods never throw exceptions). + + Message template describing an event. + Objects positionally formatted into the message template. + The internal representation of the template, which may be used to + render the as text. + Captured properties from the template and . + + MessageTemplate template; + IEnumerable<LogEventProperty> properties>; + if (Log.BindMessageTemplate("Hello, {Name}!", new[] { "World" }, out template, out properties) + { + var propsByName = properties.ToDictionary(p => p.Name, p => p.Value); + Console.WriteLine(template.Render(propsByName, null)); + // -> "Hello, World!" + } + + + + + Uses configured scalar conversion and destructuring rules to bind a property value to its captured + representation. + + True if the property could be bound, otherwise false (ILogger + The name of the property. Must be non-empty. + The property value. + If true, the value will be serialized as a structured + object if possible; if false, the object will be recorded as a scalar or simple array. + The resulting property. + methods never throw exceptions). + + + + Close and flush the logging pipeline. + + + + + Dynamically controls logging level. + + + + + Create a at the initial + minimum level. + + The initial level to which the switch is set. + + + + The current minimum level, below which no events + should be generated. + + + + + Indicates that the marked method logs data using a message template and (optional) arguments. + The name of the parameter which contains the message template should be given in the constructor. + + + + [LoggerMethod("messageTemplate")] + public void Information(string messageTemplate, params object[] propertyValues) + { + // Do something + } + + public void Foo() + { + Information("Hello, {Name}!") // Warning: Non-existing argument in message template. + } + + + + + + Initializes a new instance of the class. + + Name of the message template parameter. + + + + Gets the name of the message template parameter. + + The name of the message template parameter. + + + + Forwards log events to another logging pipeline. Copies the events so + that mutations performed on the copies do not affect the originals. + + The properties dictionary is copied, however the values within + the dictionary (of type are expected to + be immutable. + + + + A base class for visitors that rewrite the value with modifications. For example, implementations + might remove all structure properties with a certain name, apply size/length limits, or convert scalar properties of + one type into scalar properties of another. + + + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value of an unsupported type. Returns the value unchanged. + + Operation state. + The value to visit. + The result of visiting . + + + + An abstract base class for visitors that walk data in the + format. Subclasses, by + overriding appropriate methods, may search for, transform, + or print the value structures being visited. + + + Stateless, designed to accommodate allocation-free visiting of multiple + values by the same visitor instance. + + The type of a state object passed through + the visiting process. + The type of the result generated by visiting + a node. + + + + Visit the root node type. This method delegates to + a concrete Visit*Value() method appropriate for the value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value of an unsupported type. + + Operation state. + The value to visit. + The result of visiting . + + + + May be thrown by log event sinks when a failure occurs. Should not be used in cases + where the exception would propagate out to callers. + + + + + Construct a to communicate a logging failure. + + A message describing the logging failure. + + + + A simple source of information generated by Serilog itself, + for example when exceptions are thrown and caught internally. + + + + + The output mechanism for self-log messages. + + + SelfLog.Out = Console.Error; + + + + + Set the output mechanism for self-log messages. + + A synchronized to which + self-log messages will be written. + + + + Set the output mechanism for self-log messages. + + An action to invoke with self-log messages. + // ReSharper disable once MemberCanBePrivate.Global + + + + Clear the output mechanism and disable self-log events. + + // ReSharper disable once MemberCanBePrivate.Global + + + + Write a message to the self-log. + + Standard .NET format string containing the message. + First argument, if supplied. + Second argument, if supplied. + Third argument, if supplied. + + The name is historical; because this is used from third-party sink packages, removing the "Line" + suffix as would seem sensible isn't worth the breakage. + + + + + A value represented as a mapping from keys to values. + + + + + Create a with the provided . + + The key-value mappings represented in the dictionary. + + + + + The dictionary mapping. + + + + + Render the value to the output. + + The output. + A format string applied to the value, or null. + A format provider to apply to the value, or null to use the default. + . + + + + Descriptive aliases for . + + These do not appear as members of the enumeration + as duplicated underlying values result in issues when presenting + enum values with . + + + + The least significant level of event. + + + + + The most significant level of event. + + + + + A log event. + + + + + Construct a new . + + The time at which the event occurred. + The level of the event. + An exception associated with the event, or null. + The message template describing the event. + Properties associated with the event, including those presented in . + + + + The time at which the event occurred. + + + + + The level of the event. + + + + + The message template describing the event. + + + + + Render the message template to the specified output, given the properties associated + with the event. + + The output. + Supplies culture-specific formatting information, or null. + + + + Render the message template given the properties associated + with the event, and return the result. + + Supplies culture-specific formatting information, or null. + + + + Properties associated with the event, including those presented in . + + + + + An exception associated with the event, or null. + + + + + Add a property to the event if not already present, otherwise, update its value. + + The property to add or update. + + + + + Add a property to the event if not already present. + + The property to add. + + + + + Remove a property from the event, if present. Otherwise no action + is performed. + + The name of the property to remove. + + + + Specifies the meaning and relative importance of a log event. + + + + + Anything and everything you might want to know about + a running block of code. + + + + + Internal system events that aren't necessarily + observable from the outside. + + + + + The lifeblood of operational intelligence - things + happen. + + + + + Service is degraded or endangered. + + + + + Functionality is unavailable, invariants are broken + or data is lost. + + + + + If you have a pager, it goes off when one of these + occurs. + + + + + A property associated with a . + + + + + Construct a with the specified name and value. + + The name of the property. + The value of the property. + + + + + + The name of the property. + + + + + The value of the property. + + + + + Test to determine if it is a valid property name. + + The name to check. + True if the name is valid; otherwise, false. + + + + The value associated with a . Divided into scalar, + sequence and structure values to direct serialization into various formats. + + + + + Render the value to the output. + + The output. + A format string applied to the value, or null. + A format provider to apply to the value, or null to use the default. + . + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Formats the value of the current instance using the specified format. + + + The value of the current instance in the specified format. + + The format to use.-or- A null reference (Nothing in Visual Basic) to use + the default format defined for the type of the implementation. + The provider to use to format the value.-or- A null reference + (Nothing in Visual Basic) to obtain the numeric format information from the current locale + setting of the operating system. 2 + + + + Represents a message template passed to a log method. The template + can subsequently render the template in textual form given the list + of properties. + + + + + Represents the empty message template. + + + + + Construct a message template using manually-defined text and property tokens. + + The text and property tokens defining the template. + + + + Construct a message template using manually-defined text and property tokens. + + The full text of the template; used by Serilog internally to avoid unneeded + string concatenation. + The text and property tokens defining the template. + + + + Similar to , but faster. + + + + + The raw text describing the template. + + + + + Render the template as a string. + + The string representation of the template. + + + + The tokens parsed from the template. + + + + + Convert the message template into a textual message, given the + properties matching the tokens in the message template. + + Properties matching template tokens. + Supplies culture-specific formatting information, or null. + The message created from the template and properties. If the + properties are mismatched with the template, the template will be + returned with incomplete substitution. + + + + Convert the message template into a textual message, given the + properties matching the tokens in the message template. + + Properties matching template tokens. + The message created from the template and properties. If the + properties are mismatched with the template, the template will be + returned with incomplete substitution. + Supplies culture-specific formatting information, or null. + + + + A property value corresponding to a simple, scalar type. + + + + + Construct a with the specified + value. + + The value, which may be null. + + + + The value, which may be null. + + + + + Render the value to the output. + + The output. + A format string applied to the value, or null. + A format provider to apply to the value, or null to use the default. + . + + + + Determine if this instance is equal to . + + The instance to compare with. + True if the instances are equal; otherwise, false. + + + + Get a hash code representing the value. + + The instance's hash code. + + + + A value represented as an ordered sequence of values. + + + + + Create a with the provided . + + The elements of the sequence. + + + + + The elements of the sequence. + + + + + Render the value to the output. + + The output. + A format string applied to the value, or null. + A format provider to apply to the value, or null to use the default. + . + + + + A value represented as a collection of name-value properties. + + + + + Construct a with the provided properties. + + Optionally, a piece of metadata describing the "type" of the + structure. + The properties of the structure. + + + + + A piece of metadata describing the "type" of the + structure, or null. + + + + + The properties of the structure. + + Not presented as a dictionary because dictionary construction is + relatively expensive; it is cheaper to build a dictionary over properties only + when the structure is of interest. + + + + Render the value to the output. + + The output. + A format string applied to the value, or null. + A format provider to apply to the value, or null to use the default. + . + + + + Predicates applied to log events that can be used + + + + + Matches events from the specified source type. + + The source type. + A predicate for matching events. + + + + Matches events from the specified source type or namespace and + nested types or namespaces. + + A dotted source type or namespace identifier. + A function that matches log events emitted by the source. + + + + Matches events with the specified property attached, + regardless of its value. + + The name of the property to match. + A predicate for matching events. + + + + Matches events with the specified property value. + + The name of the property to match. + The property value to match; must be a scalar type. + Null is allowed. + A predicate for matching events. + + + + Matches events with the specified property value. + + The name of the property to match. + A predicate for testing + The type of scalar values to match. + A predicate for matching events. + + + + Implements the {Level} element. + can now have a fixed width applied to it, as well as casing rules. + Width is set through formats like "u3" (uppercase three chars), + "w1" (one lowercase char), or "t4" (title case four chars). + + + + + A that supports the Serilog + message template format. Formatting log events for display + has a different set of requirements and expectations from + rendering the data within them. To meet this, the formatter + overrides some behavior: First, strings are always output + as literals (not quoted) unless some other format is applied + to them. Second, tokens without matching properties are skipped + rather than being written as raw text. + + + + + Construct a . + + A message template describing the + output messages. + Supplies culture-specific formatting information, or null. + + + + Format the log event into the output. + + The event to format. + The output. + + + + This method will apply only upper or lower case formatting, not fixed width + + + + + Describes the properties available in standard message template-based + output format strings. + + + + + The message rendered from the log event. + + + + + The timestamp of the log event. + + + + + The level of the log event. + + + + + A new line. + + + + + The exception associated with the log event. + + + + + The properties of the log event. + + + + + Create properties from the provided log event. + + The log event. + A dictionary with properties representing the log event. + + + + Create properties from the provided log event. + + The log event. + The output template. + A dictionary with properties representing the log event. + + + + Formats log events in a textual representation. + + + + + Format the log event into the output. + + The event to format. + The output. + + + + Formats log events in a simple JSON structure. Instances of this class + are safe for concurrent access by multiple threads. + + + + + Construct a . + + A string that will be written after each log event is formatted. + If null, will be used. + If true, the message will be rendered and written to the output as a + property named RenderedMessage. + Supplies culture-specific formatting information, or null. + + + + Construct a . + + If true, the properties of the event will be written to + the output without enclosing braces. Otherwise, if false, each event will be written as a well-formed + JSON object. + A string that will be written after each log event is formatted. + If null, will be used. Ignored if + is true. + If true, the message will be rendered and written to the output as a + property named RenderedMessage. + Supplies culture-specific formatting information, or null. + + + + Format the log event into the output. + + The event to format. + The output. + + + + Adds a writer function for a given type. + + The type of values, which handles. + The function, which writes the values. + + + + Writes out individual renderings of attached properties + + + + + Writes out the values of individual renderings of attached properties + + + + + Writes out the attached properties + + + + + Writes out the attached properties values + + + + + Writes out the attached exception + + + + + (Optionally) writes out the rendered message + + + + + Writes out the message template for the logevent. + + + + + Writes out the log level + + + + + Writes out the log timestamp + + + + + Writes out a structure property + + + + + Writes out a sequence property + + + + + Writes out a dictionary + + + + + Writes out a json property with the specified value on output writer + + + + + Allows a subclass to write out objects that have no configured literal writer. + + The value to be written as a json construct + The writer to write on + + + + Perform simple JSON string escaping on . + + A raw string. + A JSON-escaped version of . + + + + Converts Serilog's structured property value format into JSON. + + + + + Construct a . + + When serializing structured (object) values, + the property name to use for the Serilog field + in the resulting JSON. If null, no type tag field will be written. The default is + "_typeTag". + + + + Format as JSON to . + + The value to format + The output + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Write a literal as a single JSON value, e.g. as a number or string. Override to + support more value types. Don't write arrays/structures through this method - the + active destructuring policies have already indicated the value should be scalar at + this point. + + The value to write. + The output + + + + Write a valid JSON string literal, escaping as necessary. + + The string value to write. + The output. + + + + Formats log events as a raw dump of the message template and properties. + + + + + Format the log event into the output. + + The event to format. + The output. + + + + The core Serilog logging API, used for writing log events. + + + var log = new LoggerConfiguration() + .WriteTo.Console() + .CreateLogger(); + + var thing = "World"; + log.Information("Hello, {Thing}!", thing); + + + The methods on (and its static sibling ) are guaranteed + never to throw exceptions. Methods on all other types may. + + + + + Create a logger that enriches log events via the provided enrichers. + + Enricher that applies in the context. + A logger that will enrich log events as specified. + + + + Create a logger that enriches log events via the provided enrichers. + + Enrichers that apply in the context. + A logger that will enrich log events as specified. + + + + Create a logger that enriches log events with the specified property. + + The name of the property. Must be non-empty. + The property value. + If true, the value will be serialized as a structured + object if possible; if false, the object will be recorded as a scalar or simple array. + A logger that will enrich log events as specified. + + + + Create a logger that marks log events as being from the specified + source type. + + Type generating log messages in the context. + A logger that will enrich log events as specified. + + + + Create a logger that marks log events as being from the specified + source type. + + Type generating log messages in the context. + A logger that will enrich log events as specified. + + + + Write an event to the log. + + The event to write. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + + + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + + + Determine if events at the specified level will be passed through + to the log sinks. + + Level to check. + True if the level is enabled; otherwise, false. + + + + Write a log event with the level. + + Message template describing the event. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Uses configured scalar conversion and destructuring rules to bind a set of properties to a + message template. Returns false if the template or values are invalid (ILogger + methods never throw exceptions). + + Message template describing an event. + Objects positionally formatted into the message template. + The internal representation of the template, which may be used to + render the as text. + Captured properties from the template and . + + MessageTemplate template; + IEnumerable<LogEventProperty> properties>; + if (Log.BindMessageTemplate("Hello, {Name}!", new[] { "World" }, out template, out properties) + { + var propsByName = properties.ToDictionary(p => p.Name, p => p.Value); + Console.WriteLine(template.Render(propsByName, null)); + // -> "Hello, World!" + } + + + + + Uses configured scalar conversion and destructuring rules to bind a property value to its captured + representation. + + True if the property could be bound, otherwise false (ILogger + The name of the property. Must be non-empty. + The property value. + If true, the value will be serialized as a structured + object if possible; if false, the object will be recorded as a scalar or simple array. + The resulting property. + methods never throw exceptions). + + + + An optional static entry point for logging that can be easily referenced + by different parts of an application. To configure the + set the Logger static property to a logger instance. + + + Log.Logger = new LoggerConfiguration() + .WithConsoleSink() + .CreateLogger(); + + var thing = "World"; + Log.Logger.Information("Hello, {Thing}!", thing); + + + The methods on (and its dynamic sibling ) are guaranteed + never to throw exceptions. Methods on all other types may. + + + + + The globally-shared logger. + + + + + + Resets to the default and disposes the original if possible + + + + + Create a logger that enriches log events via the provided enrichers. + + Enricher that applies in the context. + A logger that will enrich log events as specified. + + + + Create a logger that enriches log events via the provided enrichers. + + Enrichers that apply in the context. + A logger that will enrich log events as specified. + + + + Create a logger that enriches log events with the specified property. + + A logger that will enrich log events as specified. + + + + Create a logger that marks log events as being from the specified + source type. + + Type generating log messages in the context. + A logger that will enrich log events as specified. + + + + Create a logger that marks log events as being from the specified + source type. + + Type generating log messages in the context. + A logger that will enrich log events as specified. + + + + Write an event to the log. + + The event to write. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Objects positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + + + Determine if events at the specified level will be passed through + to the log sinks. + + Level to check. + True if the level is enabled; otherwise, false. + + + + Write a log event with the level. + + Message template describing the event. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Uses configured scalar conversion and destructuring rules to bind a set of properties to a + message template. Returns false if the template or values are invalid (ILogger + methods never throw exceptions). + + Message template describing an event. + Objects positionally formatted into the message template. + The internal representation of the template, which may be used to + render the as text. + Captured properties from the template and . + + MessageTemplate template; + IEnumerable<LogEventProperty> properties>; + if (Log.BindMessageTemplate("Hello, {Name}!", new[] { "World" }, out template, out properties) + { + var propsByName = properties.ToDictionary(p => p.Name, p => p.Value); + Console.WriteLine(template.Render(propsByName, null)); + // -> "Hello, World!" + } + + + + + Uses configured scalar conversion and destructuring rules to bind a property value to its captured + representation. + + True if the property could be bound, otherwise false (ILogger + The name of the property. Must be non-empty. + The property value. + If true, the value will be serialized as a structured + object if possible; if false, the object will be recorded as a scalar or simple array. + The resulting property. + methods never throw exceptions). + + + + Configuration object for creating instances. + + + + + Configures the sinks that log events will be emitted to. + + + + + Configures sinks for auditing, instead of regular (safe) logging. When auditing is used, + exceptions from sinks and any intermediate filters propagate back to the caller. Most callers + should use instead. + + + Not all sinks are compatible with transactional auditing requirements (many will use asynchronous + batching to improve write throughput and latency). Sinks need to opt-in to auditing support by + extending , though the generic + method allows any sink class to be adapted for auditing. + + + + + Configures the minimum level at which events will be passed to sinks. If + not specified, only events at the + level and above will be passed through. + + Configuration object allowing method chaining. + + + + Configures enrichment of s. Enrichers can add, remove and + modify the properties associated with events. + + + + + Configures global filtering of s. + + + + + Configures destructuring of message template parameters. + + + + + Apply external settings to the logger configuration. + + + + + Create a logger using the configured sinks, enrichers and minimum level. + + The logger. + To free resources held by sinks ahead of program shutdown, + the returned logger may be cast to and + disposed. + + + + A structure representing the alignment settings to apply when rendering a property. + + + + + Initializes a new instance of . + + The text alignment direction. + The width of the text, in characters. + + + + The text alignment direction. + + + + + The width of the text. + + + + + Defines the direction of the alignment. + + + + + Text will be left-aligned. + + + + + Text will be right-aligned. + + + + + Instructs the logger on how to store information about provided + parameters. + + + + + Convert known types and objects to scalars, arrays to sequences. + + + + + Convert all types to scalar strings. Prefix name with '$'. + + + + + Convert known types to scalars, destructure objects and collections + into sequences and structures. Prefix name with '@'. + + + + + Parses message template strings into sequences of text or property + tokens. + + + + + Parse the supplied message template. + + The message template to parse. + A sequence of text or property tokens. Where the template + is not syntactically valid, text tokens will be returned. The parser + will make a best effort to extract valid property tokens even in the + presence of parsing issues. + + + + An element parsed from a message template string. + + + + + Construct a . + + The token's start index in the template. + + + + The token's start index in the template. + + + + + The token's length. + + + + + Render the token to the output. + + Properties that may be represented by the token. + Output for the rendered string. + Supplies culture-specific formatting information, or null. + + + + A message template token representing a log event property. + + + + + Construct a . + + The name of the property. + The token as it appears in the message template. + The format applied to the property, if any. + The destructuring strategy applied to the property, if any. + + + + + Construct a . + + The name of the property. + The token as it appears in the message template. + The format applied to the property, if any. + The alignment applied to the property, if any. + The destructuring strategy applied to the property, if any. + The token's start index in the template. + + + + + The token's length. + + + + + Render the token to the output. + + Properties that may be represented by the token. + Output for the rendered string. + Supplies culture-specific formatting information, or null. + + + + The property name. + + + + + Destructuring strategy applied to the property. + + + + + Format applied to the property. + + + + + Alignment applied to the property. + + + + + True if the property name is a positional index; otherwise, false. + + + + + Try to get the integer value represented by the property name. + + The integer value, if present. + True if the property is positional, otherwise false. + + + + Determines whether the specified is equal to the current . + + + true if the specified object is equal to the current object; otherwise, false. + + The object to compare with the current object. 2 + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + 2 + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + A message template token representing literal text. + + + + + Construct a . + + The text of the token. + The token's start index in the template. + + + + + The token's length. + + + + + Render the token to the output. + + Properties that may be represented by the token. + Output for the rendered string. + Supplies culture-specific formatting information, or null. + + + + Determines whether the specified is equal to the current . + + + true if the specified object is equal to the current object; otherwise, false. + + The object to compare with the current object. 2 + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + 2 + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + The text of the token. + + + + + Apply upper or lower casing to when is provided. + Returns when no or invalid format provided + + The provided with formatting applied + + + + Writes the provided value to the output, applying direction-based padding when is provided. + + + + diff --git a/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/lib/netstandard1.3/Serilog.dll b/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/lib/netstandard1.3/Serilog.dll new file mode 100644 index 0000000000000000000000000000000000000000..acb43403c3de10dcdd5aba17118c66db0f192694 GIT binary patch literal 110592 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 literal 0 HcmV?d00001 diff --git a/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/lib/netstandard1.3/Serilog.xml b/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/lib/netstandard1.3/Serilog.xml new file mode 100644 index 00000000..3da73e54 --- /dev/null +++ b/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/lib/netstandard1.3/Serilog.xml @@ -0,0 +1,4499 @@ + + + + Serilog + + + + + Create properties based on an ordered list of provided values. + + The template that the parameters apply to. + Objects corresponding to the properties + represented in the message template. + A list of properties; if the template is malformed then + this will be empty. + + + + Implemented on types that apply settings to a logger configuration. + + + + + Apply the settings to the logger configuration. + + The logger configuration to apply settings to. + + + + Controls audit sink configuration. + + + + + Audit log events to the specified . + + The sink. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + Configuration object allowing method chaining. + + + + Audit log events to the specified . + + The sink. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + Configuration object allowing method chaining. + + + + Audit log events to a sub-logger, where further processing may occur. Events through + the sub-logger will be constrained by filters and enriched by enrichers that are + active in the parent. A sub-logger cannot be used to log at a more verbose level, but + a less verbose level is possible. + + An action that configures the sub-logger. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + Configuration object allowing method chaining. + + + + Audit log events to a sub-logger, where further processing may occur. Events through + the sub-logger will be constrained by filters and enriched by enrichers that are + active in the parent. A sub-logger cannot be used to log at a more verbose level, but + a less verbose level is possible. + + The sub-logger. This will not be shut down automatically when the + parent logger is disposed. + The minimum level for + events passed through the sink. + Configuration object allowing method chaining. + + + + Controls template parameter destructuring configuration. + + + + + Treat objects of the specified type as scalar values, i.e., don't break + them down into properties event when destructuring complex types. + + Type to treat as scalar. + Configuration object allowing method chaining. + + + + Treat objects of the specified type as scalar values, i.e., don't break + them down into properties event when destructuring complex types. + + Type to treat as scalar. + Configuration object allowing method chaining. + + + + When destructuring objects, transform instances with the provided policies. + + Policies to apply when destructuring. + Configuration object allowing method chaining. + + + + When destructuring objects, transform instances with the provided policy. + + Policy to apply when destructuring. + Configuration object allowing method chaining. + + + + When destructuring objects, transform instances of the specified type with + the provided function. + + Function mapping instances of + to an alternative representation. + Type of values to transform. + Configuration object allowing method chaining. + + + + + When destructuring objects, transform instances of the specified type with + the provided function, if the predicate returns true. Be careful to avoid any + intensive work in the predicate, as it can slow down the pipeline significantly. + + A predicate used to determine if the transform applies to + a specific type of value + Function mapping instances of + to an alternative representation. + Type of values to transform. + Configuration object allowing method chaining. + + + + + When destructuring objects, depth will be limited to 5 property traversals deep to + guard against ballooning space when recursive/cyclic structures are accidentally passed. To + increase this limit pass a higher value. + + The maximum depth to use. + Configuration object allowing method chaining. + + + + + When destructuring objects, string values can be restricted to specified length + thus avoiding bloating payload. Limit is applied to each value separately, + sum of length of strings can exceed limit. + + The maximum string length. + Configuration object allowing method chaining. + When passed length is less than 2 + + + + When destructuring objects, collections be restricted to specified count + thus avoiding bloating payload. Limit is applied to each collection separately, + sum of length of collection can exceed limit. + Applies limit to all including dictionaries. + + Configuration object allowing method chaining. + When passed length is less than 1 + + + + Controls enrichment configuration. + + + + + Specifies one or more enrichers that may add properties dynamically to + log events. + + Enrichers to apply to all events passing through + the logger. + Configuration object allowing method chaining. + + + + Specifies an enricher that may add properties dynamically to + log events. + + Enricher type to apply to all events passing through + the logger. + Configuration object allowing method chaining. + + + + Include the specified property value in all events logged to the logger. + + The name of the property to add. + The property value to add. + If true, objects of unknown type will be logged as structures; otherwise they will be converted using . + Configuration object allowing method chaining. + + + + Enrich log events with properties from . + + Configuration object allowing method chaining. + + + + + Controls filter configuration. + + + + + Filter out log events from the stream based on the provided filter. + + The filters to apply. + Configuration object allowing method chaining. + + + + Filter out log events from the stream based on the provided filter. + + The filters to apply. + Configuration object allowing method chaining. + + + + Filter out log events that match a predicate. + + Function that returns true when an event + should be excluded (silenced). + Configuration object allowing method chaining. + + + + Filter log events to include only those that match a predicate. + + Function that returns true when an event + should be included (emitted). + Configuration object allowing method chaining. + + + + Controls sink configuration. + + + + + Sets the minimum level at which events will be passed to sinks. + + The minimum level to set. + Configuration object allowing method chaining. + + + + Sets the minimum level to be dynamically controlled by the provided switch. + + The switch. + Configuration object allowing method chaining. + + + + Anything and everything you might want to know about + a running block of code. + + Configuration object allowing method chaining. + + + + Internal system events that aren't necessarily + observable from the outside. + + Configuration object allowing method chaining. + + + + The lifeblood of operational intelligence - things + happen. + + Configuration object allowing method chaining. + + + + Service is degraded or endangered. + + Configuration object allowing method chaining. + + + + Functionality is unavailable, invariants are broken + or data is lost. + + Configuration object allowing method chaining. + + + + If you have a pager, it goes off when one of these + occurs. + + Configuration object allowing method chaining. + + + + Override the minimum level for events from a specific namespace or type name. + + The (partial) namespace or type name to set the override for. + The switch controlling loggers for matching sources. + Configuration object allowing method chaining. + + + + Override the minimum level for events from a specific namespace or type name. + + The (partial) namespace or type name to set the override for. + The minimum level applied to loggers for matching sources. + Configuration object allowing method chaining. + + + + Allows additional setting sources to drive the logger configuration. + + + + + Apply external settings to the logger configuration. + + Configuration object allowing method chaining. + + + + Apply settings specified in the Serilog key-value setting format to the logger configuration. + + A list of key-value pairs describing logger settings. + Configuration object allowing method chaining. + + + + Controls sink configuration. + + + + + Write log events to the specified . + + The sink. + The minimum level for + events passed through the sink. + Configuration object allowing method chaining. + Provided for binary compatibility for earlier versions, + should be removed in 3.0. Not marked obsolete because warnings + would be syntactically annoying to avoid. + + + + Write log events to the specified . + + The sink. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + Configuration object allowing method chaining. + + + + Write log events to the specified . + + The sink. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + Configuration object allowing method chaining. + + + + Write log events to a sub-logger, where further processing may occur. Events through + the sub-logger will be constrained by filters and enriched by enrichers that are + active in the parent. A sub-logger cannot be used to log at a more verbose level, but + a less verbose level is possible. + + An action that configures the sub-logger. + The minimum level for + events passed through the sink. Ignored when is specified. + A switch allowing the pass-through minimum level + to be changed at runtime. + Configuration object allowing method chaining. + + + + Write log events to a sub-logger, where further processing may occur. Events through + the sub-logger will be constrained by filters and enriched by enrichers that are + active in the parent. A sub-logger cannot be used to log at a more verbose level, but + a less verbose level is possible. + + The sub-logger. This will not be shut down automatically when the + parent logger is disposed. + The minimum level for + events passed through the sink. + Configuration object allowing method chaining. + + + + Helper method for wrapping sinks. + + The parent sink configuration. + A function that allows for wrapping s + added in . + An action that configures sinks to be wrapped in . + Configuration object allowing method chaining. + + + + Holds ambient properties that can be attached to log events. To + configure, use the method. + + + Configuration: + + var log = new LoggerConfiguration() + .Enrich.FromLogContext() + ... + + Usage: + + using (LogContext.PushProperty("MessageId", message.Id)) + { + Log.Information("The MessageId property will be attached to this event"); + } + + + The scope of the context is the current logical thread, using AsyncLocal + (and so is preserved across async/await calls). + + + + Push a property onto the context, returning an + that must later be used to remove the property, along with any others that + may have been pushed on top of it and not yet popped. The property must + be popped from the same thread/logical call context. + + The name of the property. + The value of the property. + A handle to later remove the property from the context. + If true, and the value is a non-primitive, non-array type, + then the value will be converted to a structure; otherwise, unknown types will + be converted to scalars, which are generally stored as strings. + A token that must be disposed, in order, to pop properties back off the stack. + + + + Push an enricher onto the context, returning an + that must later be used to remove the property, along with any others that + may have been pushed on top of it and not yet popped. The property must + be popped from the same thread/logical call context. + + An enricher to push onto the log context + A token that must be disposed, in order, to pop properties back off the stack. + + + + + Push multiple enrichers onto the context, returning an + that must later be used to remove the property, along with any others that + may have been pushed on top of it and not yet popped. The property must + be popped from the same thread/logical call context. + + . + Enrichers to push onto the log context + A token that must be disposed, in order, to pop properties back off the stack. + + + + + Push enrichers onto the log context. This method is obsolete, please + use instead. + + Enrichers to push onto the log context + A token that must be disposed, in order, to pop properties back off the stack. + + + + + Obtain an enricher that represents the current contents of the . This + can be pushed back onto the context in a different location/thread when required. + + An enricher that represents the current contents of the . + + + + Constants used in the core logging pipeline and associated types. + + + + + The name of the property included in the emitted log events + when ForContext<T>() and overloads are + applied. + + + + + Adds a new property encricher to the log event. + + + + + Create a new property enricher. + + The name of the property. + The value of the property. + A handle to later remove the property from the context. + If true, and the value is a non-primitive, non-array type, + then the value will be converted to a structure; otherwise, unknown types will + be converted to scalars, which are generally stored as strings. + + + + + + Enrich the log event. + + The log event to enrich. + Factory for creating new properties to add to the event. + + + + Determine how, when destructuring, a supplied value is represented + as a complex log event property. + + + + + If supported, destructure the provided value. + + The value to destructure. + Recursively apply policies to destructure additional values. + The destructured value, or null. + True if the value could be destructured under this policy. + + + + Applied during logging to add additional information to log events. + + + + + Enrich the log event. + + The log event to enrich. + Factory for creating new properties to add to the event. + + + + Provides filtering of the log event stream. + + + + + Returns true if the provided event is enabled. Otherwise, false. + + The event to test. + True if the event is enabled by this filter. If false + is returned, the event will not be emitted. + + + + Creates log event properties from regular .NET objects, applying policies as + required. + + + + + Construct a with the specified name and value. + + The name of the property. + The value of the property. + If true, and the value is a non-primitive, non-array type, + then the value will be converted to a structure; otherwise, unknown types will + be converted to scalars, which are generally stored as strings. + + + + + Supports the policy-driven construction of s given + regular .NET objects. + + + + + Create a given a .NET object and destructuring + strategy. + + The value of the property. + If true, and the value is a non-primitive, non-array type, + then the value will be converted to a structure; otherwise, unknown types will + be converted to scalars, which are generally stored as strings. + The value. + + + + A destination for log events. + + + + + Emit the provided log event to the sink. + + The log event to write. + + + + Determine how a simple value is carried through the logging + pipeline as an immutable . + + + + + If supported, convert the provided value into an immutable scalar. + + The value to convert. + The converted value, or null. + True if the value could be converted under this policy. + + + + The core Serilog logging pipeline. A must + be disposed to flush any events buffered within it. Most application + code should depend on , not this class. + + + + + Create a logger that enriches log events via the provided enrichers. + + Enricher that applies in the context. + A logger that will enrich log events as specified. + + + + Create a logger that enriches log events via the provided enrichers. + + Enrichers that apply in the context. + A logger that will enrich log events as specified. + + + + Create a logger that enriches log events with the specified property. + + The name of the property. Must be non-empty. + The property value. + If true, the value will be serialized as a structured + object if possible; if false, the object will be recorded as a scalar or simple array. + A logger that will enrich log events as specified. + + + + Create a logger that marks log events as being from the specified + source type. + + Type generating log messages in the context. + A logger that will enrich log events as specified. + + + + Create a logger that marks log events as being from the specified + source type. + + Type generating log messages in the context. + A logger that will enrich log events as specified. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + + + + + + Determine if events at the specified level will be passed through + to the log sinks. + + Level to check. + True if the level is enabled; otherwise, false. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + + + Write an event to the log. + + The event to write. + + + + Write a log event with the level. + + Message template describing the event. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Uses configured scalar conversion and destructuring rules to bind a set of properties to a + message template. Returns false if the template or values are invalid (ILogger + methods never throw exceptions). + + Message template describing an event. + Objects positionally formatted into the message template. + The internal representation of the template, which may be used to + render the as text. + Captured properties from the template and . + + MessageTemplate template; + IEnumerable<LogEventProperty> properties>; + if (Log.BindMessageTemplate("Hello, {Name}!", new[] { "World" }, out template, out properties) + { + var propsByName = properties.ToDictionary(p => p.Name, p => p.Value); + Console.WriteLine(template.Render(propsByName, null)); + // -> "Hello, World!" + } + + + + + Uses configured scalar conversion and destructuring rules to bind a property value to its captured + representation. + + True if the property could be bound, otherwise false (ILogger + The name of the property. Must be non-empty. + The property value. + If true, the value will be serialized as a structured + object if possible; if false, the object will be recorded as a scalar or simple array. + The resulting property. + methods never throw exceptions). + + + + Close and flush the logging pipeline. + + + + + Dynamically controls logging level. + + + + + Create a at the initial + minimum level. + + The initial level to which the switch is set. + + + + The current minimum level, below which no events + should be generated. + + + + + Indicates that the marked method logs data using a message template and (optional) arguments. + The name of the parameter which contains the message template should be given in the constructor. + + + + [LoggerMethod("messageTemplate")] + public void Information(string messageTemplate, params object[] propertyValues) + { + // Do something + } + + public void Foo() + { + Information("Hello, {Name}!") // Warning: Non-existing argument in message template. + } + + + + + + Initializes a new instance of the class. + + Name of the message template parameter. + + + + Gets the name of the message template parameter. + + The name of the message template parameter. + + + + Forwards log events to another logging pipeline. Copies the events so + that mutations performed on the copies do not affect the originals. + + The properties dictionary is copied, however the values within + the dictionary (of type are expected to + be immutable. + + + + A base class for visitors that rewrite the value with modifications. For example, implementations + might remove all structure properties with a certain name, apply size/length limits, or convert scalar properties of + one type into scalar properties of another. + + + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value of an unsupported type. Returns the value unchanged. + + Operation state. + The value to visit. + The result of visiting . + + + + An abstract base class for visitors that walk data in the + format. Subclasses, by + overriding appropriate methods, may search for, transform, + or print the value structures being visited. + + + Stateless, designed to accommodate allocation-free visiting of multiple + values by the same visitor instance. + + The type of a state object passed through + the visiting process. + The type of the result generated by visiting + a node. + + + + Visit the root node type. This method delegates to + a concrete Visit*Value() method appropriate for the value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value of an unsupported type. + + Operation state. + The value to visit. + The result of visiting . + + + + May be thrown by log event sinks when a failure occurs. Should not be used in cases + where the exception would propagate out to callers. + + + + + Construct a to communicate a logging failure. + + A message describing the logging failure. + + + + A simple source of information generated by Serilog itself, + for example when exceptions are thrown and caught internally. + + + + + The output mechanism for self-log messages. + + + SelfLog.Out = Console.Error; + + + + + Set the output mechanism for self-log messages. + + A synchronized to which + self-log messages will be written. + + + + Set the output mechanism for self-log messages. + + An action to invoke with self-log messages. + // ReSharper disable once MemberCanBePrivate.Global + + + + Clear the output mechanism and disable self-log events. + + // ReSharper disable once MemberCanBePrivate.Global + + + + Write a message to the self-log. + + Standard .NET format string containing the message. + First argument, if supplied. + Second argument, if supplied. + Third argument, if supplied. + + The name is historical; because this is used from third-party sink packages, removing the "Line" + suffix as would seem sensible isn't worth the breakage. + + + + + A value represented as a mapping from keys to values. + + + + + Create a with the provided . + + The key-value mappings represented in the dictionary. + + + + + The dictionary mapping. + + + + + Render the value to the output. + + The output. + A format string applied to the value, or null. + A format provider to apply to the value, or null to use the default. + . + + + + Descriptive aliases for . + + These do not appear as members of the enumeration + as duplicated underlying values result in issues when presenting + enum values with . + + + + The least significant level of event. + + + + + The most significant level of event. + + + + + A log event. + + + + + Construct a new . + + The time at which the event occurred. + The level of the event. + An exception associated with the event, or null. + The message template describing the event. + Properties associated with the event, including those presented in . + + + + The time at which the event occurred. + + + + + The level of the event. + + + + + The message template describing the event. + + + + + Render the message template to the specified output, given the properties associated + with the event. + + The output. + Supplies culture-specific formatting information, or null. + + + + Render the message template given the properties associated + with the event, and return the result. + + Supplies culture-specific formatting information, or null. + + + + Properties associated with the event, including those presented in . + + + + + An exception associated with the event, or null. + + + + + Add a property to the event if not already present, otherwise, update its value. + + The property to add or update. + + + + + Add a property to the event if not already present. + + The property to add. + + + + + Remove a property from the event, if present. Otherwise no action + is performed. + + The name of the property to remove. + + + + Specifies the meaning and relative importance of a log event. + + + + + Anything and everything you might want to know about + a running block of code. + + + + + Internal system events that aren't necessarily + observable from the outside. + + + + + The lifeblood of operational intelligence - things + happen. + + + + + Service is degraded or endangered. + + + + + Functionality is unavailable, invariants are broken + or data is lost. + + + + + If you have a pager, it goes off when one of these + occurs. + + + + + A property associated with a . + + + + + Construct a with the specified name and value. + + The name of the property. + The value of the property. + + + + + + The name of the property. + + + + + The value of the property. + + + + + Test to determine if it is a valid property name. + + The name to check. + True if the name is valid; otherwise, false. + + + + The value associated with a . Divided into scalar, + sequence and structure values to direct serialization into various formats. + + + + + Render the value to the output. + + The output. + A format string applied to the value, or null. + A format provider to apply to the value, or null to use the default. + . + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + Formats the value of the current instance using the specified format. + + + The value of the current instance in the specified format. + + The format to use.-or- A null reference (Nothing in Visual Basic) to use + the default format defined for the type of the implementation. + The provider to use to format the value.-or- A null reference + (Nothing in Visual Basic) to obtain the numeric format information from the current locale + setting of the operating system. 2 + + + + Represents a message template passed to a log method. The template + can subsequently render the template in textual form given the list + of properties. + + + + + Represents the empty message template. + + + + + Construct a message template using manually-defined text and property tokens. + + The text and property tokens defining the template. + + + + Construct a message template using manually-defined text and property tokens. + + The full text of the template; used by Serilog internally to avoid unneeded + string concatenation. + The text and property tokens defining the template. + + + + Similar to , but faster. + + + + + The raw text describing the template. + + + + + Render the template as a string. + + The string representation of the template. + + + + The tokens parsed from the template. + + + + + Convert the message template into a textual message, given the + properties matching the tokens in the message template. + + Properties matching template tokens. + Supplies culture-specific formatting information, or null. + The message created from the template and properties. If the + properties are mismatched with the template, the template will be + returned with incomplete substitution. + + + + Convert the message template into a textual message, given the + properties matching the tokens in the message template. + + Properties matching template tokens. + The message created from the template and properties. If the + properties are mismatched with the template, the template will be + returned with incomplete substitution. + Supplies culture-specific formatting information, or null. + + + + A property value corresponding to a simple, scalar type. + + + + + Construct a with the specified + value. + + The value, which may be null. + + + + The value, which may be null. + + + + + Render the value to the output. + + The output. + A format string applied to the value, or null. + A format provider to apply to the value, or null to use the default. + . + + + + Determine if this instance is equal to . + + The instance to compare with. + True if the instances are equal; otherwise, false. + + + + Get a hash code representing the value. + + The instance's hash code. + + + + A value represented as an ordered sequence of values. + + + + + Create a with the provided . + + The elements of the sequence. + + + + + The elements of the sequence. + + + + + Render the value to the output. + + The output. + A format string applied to the value, or null. + A format provider to apply to the value, or null to use the default. + . + + + + A value represented as a collection of name-value properties. + + + + + Construct a with the provided properties. + + Optionally, a piece of metadata describing the "type" of the + structure. + The properties of the structure. + + + + + A piece of metadata describing the "type" of the + structure, or null. + + + + + The properties of the structure. + + Not presented as a dictionary because dictionary construction is + relatively expensive; it is cheaper to build a dictionary over properties only + when the structure is of interest. + + + + Render the value to the output. + + The output. + A format string applied to the value, or null. + A format provider to apply to the value, or null to use the default. + . + + + + Predicates applied to log events that can be used + + + + + Matches events from the specified source type. + + The source type. + A predicate for matching events. + + + + Matches events from the specified source type or namespace and + nested types or namespaces. + + A dotted source type or namespace identifier. + A function that matches log events emitted by the source. + + + + Matches events with the specified property attached, + regardless of its value. + + The name of the property to match. + A predicate for matching events. + + + + Matches events with the specified property value. + + The name of the property to match. + The property value to match; must be a scalar type. + Null is allowed. + A predicate for matching events. + + + + Matches events with the specified property value. + + The name of the property to match. + A predicate for testing + The type of scalar values to match. + A predicate for matching events. + + + + Implements the {Level} element. + can now have a fixed width applied to it, as well as casing rules. + Width is set through formats like "u3" (uppercase three chars), + "w1" (one lowercase char), or "t4" (title case four chars). + + + + + A that supports the Serilog + message template format. Formatting log events for display + has a different set of requirements and expectations from + rendering the data within them. To meet this, the formatter + overrides some behavior: First, strings are always output + as literals (not quoted) unless some other format is applied + to them. Second, tokens without matching properties are skipped + rather than being written as raw text. + + + + + Construct a . + + A message template describing the + output messages. + Supplies culture-specific formatting information, or null. + + + + Format the log event into the output. + + The event to format. + The output. + + + + This method will apply only upper or lower case formatting, not fixed width + + + + + Describes the properties available in standard message template-based + output format strings. + + + + + The message rendered from the log event. + + + + + The timestamp of the log event. + + + + + The level of the log event. + + + + + A new line. + + + + + The exception associated with the log event. + + + + + The properties of the log event. + + + + + Create properties from the provided log event. + + The log event. + A dictionary with properties representing the log event. + + + + Create properties from the provided log event. + + The log event. + The output template. + A dictionary with properties representing the log event. + + + + Formats log events in a textual representation. + + + + + Format the log event into the output. + + The event to format. + The output. + + + + Formats log events in a simple JSON structure. Instances of this class + are safe for concurrent access by multiple threads. + + + + + Construct a . + + A string that will be written after each log event is formatted. + If null, will be used. + If true, the message will be rendered and written to the output as a + property named RenderedMessage. + Supplies culture-specific formatting information, or null. + + + + Construct a . + + If true, the properties of the event will be written to + the output without enclosing braces. Otherwise, if false, each event will be written as a well-formed + JSON object. + A string that will be written after each log event is formatted. + If null, will be used. Ignored if + is true. + If true, the message will be rendered and written to the output as a + property named RenderedMessage. + Supplies culture-specific formatting information, or null. + + + + Format the log event into the output. + + The event to format. + The output. + + + + Adds a writer function for a given type. + + The type of values, which handles. + The function, which writes the values. + + + + Writes out individual renderings of attached properties + + + + + Writes out the values of individual renderings of attached properties + + + + + Writes out the attached properties + + + + + Writes out the attached properties values + + + + + Writes out the attached exception + + + + + (Optionally) writes out the rendered message + + + + + Writes out the message template for the logevent. + + + + + Writes out the log level + + + + + Writes out the log timestamp + + + + + Writes out a structure property + + + + + Writes out a sequence property + + + + + Writes out a dictionary + + + + + Writes out a json property with the specified value on output writer + + + + + Allows a subclass to write out objects that have no configured literal writer. + + The value to be written as a json construct + The writer to write on + + + + Perform simple JSON string escaping on . + + A raw string. + A JSON-escaped version of . + + + + Converts Serilog's structured property value format into JSON. + + + + + Construct a . + + When serializing structured (object) values, + the property name to use for the Serilog field + in the resulting JSON. If null, no type tag field will be written. The default is + "_typeTag". + + + + Format as JSON to . + + The value to format + The output + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Visit a value. + + Operation state. + The value to visit. + The result of visiting . + + + + Write a literal as a single JSON value, e.g. as a number or string. Override to + support more value types. Don't write arrays/structures through this method - the + active destructuring policies have already indicated the value should be scalar at + this point. + + The value to write. + The output + + + + Write a valid JSON string literal, escaping as necessary. + + The string value to write. + The output. + + + + Formats log events as a raw dump of the message template and properties. + + + + + Format the log event into the output. + + The event to format. + The output. + + + + The core Serilog logging API, used for writing log events. + + + var log = new LoggerConfiguration() + .WriteTo.Console() + .CreateLogger(); + + var thing = "World"; + log.Information("Hello, {Thing}!", thing); + + + The methods on (and its static sibling ) are guaranteed + never to throw exceptions. Methods on all other types may. + + + + + Create a logger that enriches log events via the provided enrichers. + + Enricher that applies in the context. + A logger that will enrich log events as specified. + + + + Create a logger that enriches log events via the provided enrichers. + + Enrichers that apply in the context. + A logger that will enrich log events as specified. + + + + Create a logger that enriches log events with the specified property. + + The name of the property. Must be non-empty. + The property value. + If true, the value will be serialized as a structured + object if possible; if false, the object will be recorded as a scalar or simple array. + A logger that will enrich log events as specified. + + + + Create a logger that marks log events as being from the specified + source type. + + Type generating log messages in the context. + A logger that will enrich log events as specified. + + + + Create a logger that marks log events as being from the specified + source type. + + Type generating log messages in the context. + A logger that will enrich log events as specified. + + + + Write an event to the log. + + The event to write. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + + + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + + + Determine if events at the specified level will be passed through + to the log sinks. + + Level to check. + True if the level is enabled; otherwise, false. + + + + Write a log event with the level. + + Message template describing the event. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level and associated exception. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Uses configured scalar conversion and destructuring rules to bind a set of properties to a + message template. Returns false if the template or values are invalid (ILogger + methods never throw exceptions). + + Message template describing an event. + Objects positionally formatted into the message template. + The internal representation of the template, which may be used to + render the as text. + Captured properties from the template and . + + MessageTemplate template; + IEnumerable<LogEventProperty> properties>; + if (Log.BindMessageTemplate("Hello, {Name}!", new[] { "World" }, out template, out properties) + { + var propsByName = properties.ToDictionary(p => p.Name, p => p.Value); + Console.WriteLine(template.Render(propsByName, null)); + // -> "Hello, World!" + } + + + + + Uses configured scalar conversion and destructuring rules to bind a property value to its captured + representation. + + True if the property could be bound, otherwise false (ILogger + The name of the property. Must be non-empty. + The property value. + If true, the value will be serialized as a structured + object if possible; if false, the object will be recorded as a scalar or simple array. + The resulting property. + methods never throw exceptions). + + + + An optional static entry point for logging that can be easily referenced + by different parts of an application. To configure the + set the Logger static property to a logger instance. + + + Log.Logger = new LoggerConfiguration() + .WithConsoleSink() + .CreateLogger(); + + var thing = "World"; + Log.Logger.Information("Hello, {Thing}!", thing); + + + The methods on (and its dynamic sibling ) are guaranteed + never to throw exceptions. Methods on all other types may. + + + + + The globally-shared logger. + + + + + + Resets to the default and disposes the original if possible + + + + + Create a logger that enriches log events via the provided enrichers. + + Enricher that applies in the context. + A logger that will enrich log events as specified. + + + + Create a logger that enriches log events via the provided enrichers. + + Enrichers that apply in the context. + A logger that will enrich log events as specified. + + + + Create a logger that enriches log events with the specified property. + + A logger that will enrich log events as specified. + + + + Create a logger that marks log events as being from the specified + source type. + + Type generating log messages in the context. + A logger that will enrich log events as specified. + + + + Create a logger that marks log events as being from the specified + source type. + + Type generating log messages in the context. + A logger that will enrich log events as specified. + + + + Write an event to the log. + + The event to write. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level. + + The level of the event. + Message template describing the event. + Objects positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + + + Write a log event with the specified level and associated exception. + + The level of the event. + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + + + Determine if events at the specified level will be passed through + to the log sinks. + + Level to check. + True if the level is enabled; otherwise, false. + + + + Write a log event with the level. + + Message template describing the event. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Verbose("Staring into space, wondering if we're alone."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Verbose(ex, "Staring into space, wondering where this comet came from."); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Debug("Starting up at {StartedAt}.", DateTime.Now); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Debug(ex, "Swallowing a mundane exception."); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); + + + + + Write a log event with the level. + + Message template describing the event. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level. + + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Fatal("Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + Object positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Write a log event with the level and associated exception. + + Exception related to the event. + Message template describing the event. + Objects positionally formatted into the message template. + + Log.Fatal(ex, "Process terminating."); + + + + + Uses configured scalar conversion and destructuring rules to bind a set of properties to a + message template. Returns false if the template or values are invalid (ILogger + methods never throw exceptions). + + Message template describing an event. + Objects positionally formatted into the message template. + The internal representation of the template, which may be used to + render the as text. + Captured properties from the template and . + + MessageTemplate template; + IEnumerable<LogEventProperty> properties>; + if (Log.BindMessageTemplate("Hello, {Name}!", new[] { "World" }, out template, out properties) + { + var propsByName = properties.ToDictionary(p => p.Name, p => p.Value); + Console.WriteLine(template.Render(propsByName, null)); + // -> "Hello, World!" + } + + + + + Uses configured scalar conversion and destructuring rules to bind a property value to its captured + representation. + + True if the property could be bound, otherwise false (ILogger + The name of the property. Must be non-empty. + The property value. + If true, the value will be serialized as a structured + object if possible; if false, the object will be recorded as a scalar or simple array. + The resulting property. + methods never throw exceptions). + + + + Configuration object for creating instances. + + + + + Configures the sinks that log events will be emitted to. + + + + + Configures sinks for auditing, instead of regular (safe) logging. When auditing is used, + exceptions from sinks and any intermediate filters propagate back to the caller. Most callers + should use instead. + + + Not all sinks are compatible with transactional auditing requirements (many will use asynchronous + batching to improve write throughput and latency). Sinks need to opt-in to auditing support by + extending , though the generic + method allows any sink class to be adapted for auditing. + + + + + Configures the minimum level at which events will be passed to sinks. If + not specified, only events at the + level and above will be passed through. + + Configuration object allowing method chaining. + + + + Configures enrichment of s. Enrichers can add, remove and + modify the properties associated with events. + + + + + Configures global filtering of s. + + + + + Configures destructuring of message template parameters. + + + + + Apply external settings to the logger configuration. + + + + + Create a logger using the configured sinks, enrichers and minimum level. + + The logger. + To free resources held by sinks ahead of program shutdown, + the returned logger may be cast to and + disposed. + + + + A structure representing the alignment settings to apply when rendering a property. + + + + + Initializes a new instance of . + + The text alignment direction. + The width of the text, in characters. + + + + The text alignment direction. + + + + + The width of the text. + + + + + Defines the direction of the alignment. + + + + + Text will be left-aligned. + + + + + Text will be right-aligned. + + + + + Instructs the logger on how to store information about provided + parameters. + + + + + Convert known types and objects to scalars, arrays to sequences. + + + + + Convert all types to scalar strings. Prefix name with '$'. + + + + + Convert known types to scalars, destructure objects and collections + into sequences and structures. Prefix name with '@'. + + + + + Parses message template strings into sequences of text or property + tokens. + + + + + Parse the supplied message template. + + The message template to parse. + A sequence of text or property tokens. Where the template + is not syntactically valid, text tokens will be returned. The parser + will make a best effort to extract valid property tokens even in the + presence of parsing issues. + + + + An element parsed from a message template string. + + + + + Construct a . + + The token's start index in the template. + + + + The token's start index in the template. + + + + + The token's length. + + + + + Render the token to the output. + + Properties that may be represented by the token. + Output for the rendered string. + Supplies culture-specific formatting information, or null. + + + + A message template token representing a log event property. + + + + + Construct a . + + The name of the property. + The token as it appears in the message template. + The format applied to the property, if any. + The destructuring strategy applied to the property, if any. + + + + + Construct a . + + The name of the property. + The token as it appears in the message template. + The format applied to the property, if any. + The alignment applied to the property, if any. + The destructuring strategy applied to the property, if any. + The token's start index in the template. + + + + + The token's length. + + + + + Render the token to the output. + + Properties that may be represented by the token. + Output for the rendered string. + Supplies culture-specific formatting information, or null. + + + + The property name. + + + + + Destructuring strategy applied to the property. + + + + + Format applied to the property. + + + + + Alignment applied to the property. + + + + + True if the property name is a positional index; otherwise, false. + + + + + Try to get the integer value represented by the property name. + + The integer value, if present. + True if the property is positional, otherwise false. + + + + Determines whether the specified is equal to the current . + + + true if the specified object is equal to the current object; otherwise, false. + + The object to compare with the current object. 2 + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + 2 + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + A message template token representing literal text. + + + + + Construct a . + + The text of the token. + The token's start index in the template. + + + + + The token's length. + + + + + Render the token to the output. + + Properties that may be represented by the token. + Output for the rendered string. + Supplies culture-specific formatting information, or null. + + + + Determines whether the specified is equal to the current . + + + true if the specified object is equal to the current object; otherwise, false. + + The object to compare with the current object. 2 + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + 2 + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + 2 + + + + The text of the token. + + + + + Apply upper or lower casing to when is provided. + Returns when no or invalid format provided + + The provided with formatting applied + + + + Writes the provided value to the output, applying direction-based padding when is provided. + + + + diff --git a/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/serilog.2.5.0.nupkg.sha512 b/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/serilog.2.5.0.nupkg.sha512 new file mode 100644 index 00000000..447e4aa5 --- /dev/null +++ b/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/serilog.2.5.0.nupkg.sha512 @@ -0,0 +1 @@ +1uxuc49NByFrDrLszFOWqpUCL7pA9nc1SAgKPB3J7aNq6ChIvQmb64JIuY2hvK/K7YlWK/FGb3FYdxsFGWA+Mw== \ No newline at end of file diff --git a/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/serilog.nuspec b/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/serilog.nuspec new file mode 100644 index 00000000..da425345 --- /dev/null +++ b/lambda/MAS/nice.logging.quickfix/serilog/2.5.0/serilog.nuspec @@ -0,0 +1,46 @@ + + + + Serilog + 2.5.0 + Serilog Contributors + Serilog Contributors + false + http://www.apache.org/licenses/LICENSE-2.0 + http://serilog.net/ + http://serilog.net/images/serilog-nuget.png + Simple .NET logging with fully-structured events + serilog logging semantic structured + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 15b8b04ad58670c982bc836a0b316b10fcbd0976 Mon Sep 17 00:00:00 2001 From: imranazad Date: Fri, 21 Jan 2022 15:12:39 +0000 Subject: [PATCH 6/9] MAS-258 Add nuget package --- lambda/MAS/MAS.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/lambda/MAS/MAS.csproj b/lambda/MAS/MAS.csproj index 2b3a08d0..7be00431 100644 --- a/lambda/MAS/MAS.csproj +++ b/lambda/MAS/MAS.csproj @@ -19,6 +19,7 @@ + From 2090d68fe764c7c01beb151c6860a6876bd8741b Mon Sep 17 00:00:00 2001 From: imranazad Date: Fri, 21 Jan 2022 15:22:06 +0000 Subject: [PATCH 7/9] MAS-258 Update Microsoft.Extensions.Configuration --- lambda/MAS.Tests/MAS.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lambda/MAS.Tests/MAS.Tests.csproj b/lambda/MAS.Tests/MAS.Tests.csproj index d0efa7ce..ab0524bf 100644 --- a/lambda/MAS.Tests/MAS.Tests.csproj +++ b/lambda/MAS.Tests/MAS.Tests.csproj @@ -66,7 +66,7 @@ - + From 2c97a94a596aabd0b70e1b94c743025f46ba7e7e Mon Sep 17 00:00:00 2001 From: imranazad Date: Fri, 21 Jan 2022 16:06:41 +0000 Subject: [PATCH 8/9] MAS-258 Changed IHostingEnvironment to IHostEnvironment _ IHosting to IHOST --- .../UnitTests/Services/ViewRendererTests.cs | 5 +++-- lambda/MAS.sln | 1 - lambda/MAS/LambdaEntryPoint.cs | 16 ++++++++++------ lambda/MAS/MAS.csproj | 2 +- lambda/MAS/SeriLogger.cs | 5 +++-- lambda/MAS/Services/ViewRenderer.cs | 7 ++++--- lambda/MAS/Startup.cs | 6 +++--- 7 files changed, 24 insertions(+), 18 deletions(-) diff --git a/lambda/MAS.Tests/UnitTests/Services/ViewRendererTests.cs b/lambda/MAS.Tests/UnitTests/Services/ViewRendererTests.cs index efcb9a7c..cbc4136c 100644 --- a/lambda/MAS.Tests/UnitTests/Services/ViewRendererTests.cs +++ b/lambda/MAS.Tests/UnitTests/Services/ViewRendererTests.cs @@ -15,6 +15,7 @@ using Microsoft.AspNetCore.Mvc.Rendering; using System.Collections.Generic; using System; +using Microsoft.Extensions.Hosting; namespace MAS.Tests.UnitTests { @@ -39,7 +40,7 @@ public async Task RendersViewToString() mockController.Object.TempData = Mock.Of(); //Act - var viewRenderer = new ViewRenderer(Mock.Of>(), mockViewEngine.Object, Mock.Of()); + var viewRenderer = new ViewRenderer(Mock.Of>(), mockViewEngine.Object, Mock.Of()); var result = await viewRenderer.RenderViewAsync(mockController.Object, "~/AMockedView.cshtml", Mock.Of(), false); //Assert @@ -63,7 +64,7 @@ public async Task FailingToFindViewThrowsException() mockController.Object.TempData = Mock.Of(); //Act + Assert - var viewRenderer = new ViewRenderer(Mock.Of>(), mockViewEngine.Object, Mock.Of()); + var viewRenderer = new ViewRenderer(Mock.Of>(), mockViewEngine.Object, Mock.Of()); await Should.ThrowAsync(() => viewRenderer.RenderViewAsync(mockController.Object, "~/AMockedView.cshtml", Mock.Of(), false)); } } diff --git a/lambda/MAS.sln b/lambda/MAS.sln index abe073cb..57aad366 100644 --- a/lambda/MAS.sln +++ b/lambda/MAS.sln @@ -20,7 +20,6 @@ Global {75974ECB-FA2B-4C8F-9F88-24BA1D636048}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {75974ECB-FA2B-4C8F-9F88-24BA1D636048}.Debug|Any CPU.Build.0 = Debug|Any CPU {75974ECB-FA2B-4C8F-9F88-24BA1D636048}.Release|Any CPU.ActiveCfg = Release|Any CPU - {75974ECB-FA2B-4C8F-9F88-24BA1D636048}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/lambda/MAS/LambdaEntryPoint.cs b/lambda/MAS/LambdaEntryPoint.cs index ad0d6e2d..cbf4672d 100644 --- a/lambda/MAS/LambdaEntryPoint.cs +++ b/lambda/MAS/LambdaEntryPoint.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Net; using System.Threading.Tasks; -using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Hosting; using System.IO; using Amazon.Lambda.APIGatewayEvents; using Amazon.Lambda.AspNetCoreServer.Internal; @@ -11,6 +11,7 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.DependencyInjection; using static Amazon.Lambda.APIGatewayEvents.APIGatewayProxyRequest; +using Microsoft.AspNetCore.Hosting; namespace MAS { @@ -30,11 +31,11 @@ public class LambdaEntryPoint : private ILogger _logger; - protected override void PostCreateWebHost(IWebHost webHost) + protected override void PostCreateHost(IHost webHost) { _logger = webHost.Services.GetRequiredService>(); - base.PostCreateWebHost(webHost); + base.PostCreateHost(webHost); } /// @@ -42,10 +43,13 @@ protected override void PostCreateWebHost(IWebHost webHost) /// needs to be configured in this method using the UseStartup<>() method. /// /// - protected override void Init(IWebHostBuilder builder) + protected override void Init(IHostBuilder builder) { - builder - .UseStartup(); + builder.ConfigureWebHostDefaults(webBuilder => + { + webBuilder + .UseStartup(); + }); } public override Task FunctionHandlerAsync(APIGatewayProxyRequest request, ILambdaContext lambdaContext) diff --git a/lambda/MAS/MAS.csproj b/lambda/MAS/MAS.csproj index 7be00431..21921897 100644 --- a/lambda/MAS/MAS.csproj +++ b/lambda/MAS/MAS.csproj @@ -18,7 +18,7 @@ - + diff --git a/lambda/MAS/SeriLogger.cs b/lambda/MAS/SeriLogger.cs index 555d6d78..048e6388 100644 --- a/lambda/MAS/SeriLogger.cs +++ b/lambda/MAS/SeriLogger.cs @@ -1,6 +1,7 @@ using MAS.Configuration; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using NICE.Logging; using NICE.Logging.Sinks.RabbitMQ; @@ -12,12 +13,12 @@ namespace MAS.Logging { public interface ISeriLogger { - void Configure(ILoggerFactory loggerFactory, IConfiguration configuration, IApplicationLifetime appLifetime, IHostingEnvironment env, EnvironmentConfig environmentConfig); + void Configure(ILoggerFactory loggerFactory, IConfiguration configuration, Microsoft.Extensions.Hosting.IApplicationLifetime appLifetime, IHostEnvironment env, EnvironmentConfig environmentConfig); } public class SeriLogger : ISeriLogger { - public void Configure(ILoggerFactory loggerFactory, IConfiguration configuration, IApplicationLifetime appLifetime, IHostingEnvironment env, EnvironmentConfig environmentConfig) + public void Configure(ILoggerFactory loggerFactory, IConfiguration configuration, Microsoft.Extensions.Hosting.IApplicationLifetime appLifetime, IHostEnvironment env, EnvironmentConfig environmentConfig) { // read appsettings var logCfg = configuration.GetSection("Logging"); diff --git a/lambda/MAS/Services/ViewRenderer.cs b/lambda/MAS/Services/ViewRenderer.cs index 34404296..cfe6ce6c 100644 --- a/lambda/MAS/Services/ViewRenderer.cs +++ b/lambda/MAS/Services/ViewRenderer.cs @@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.ViewEngines; using Microsoft.AspNetCore.Mvc.ViewFeatures; +using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using System; using System.IO; @@ -21,9 +22,9 @@ public class ViewRenderer : IViewRenderer private readonly ILogger _logger; private readonly ICompositeViewEngine _compositeViewEngine; - private readonly IHostingEnvironment _hostingEnvironment; + private readonly IHostEnvironment _hostingEnvironment; - public ViewRenderer(ILogger logger, ICompositeViewEngine compositeViewEngine, IHostingEnvironment hostingEnvironment) + public ViewRenderer(ILogger logger, ICompositeViewEngine compositeViewEngine, IHostEnvironment hostingEnvironment) { _logger = logger; _compositeViewEngine = compositeViewEngine; @@ -41,7 +42,7 @@ public async Task RenderViewAsync(Controller controller, string using (var writer = new StringWriter()) { - var viewResult = _compositeViewEngine.GetView(_hostingEnvironment.WebRootPath, viewName, !isPartial); + var viewResult = _compositeViewEngine.GetView(_hostingEnvironment.ContentRootPath, viewName, !isPartial); if (viewResult.Success == false) { diff --git a/lambda/MAS/Startup.cs b/lambda/MAS/Startup.cs index 57a40729..79395ef1 100644 --- a/lambda/MAS/Startup.cs +++ b/lambda/MAS/Startup.cs @@ -21,9 +21,9 @@ public class Startup { public static readonly RegionEndpoint Region = RegionEndpoint.EUWest1; public static IConfiguration Configuration { get; private set; } - public IHostingEnvironment Environment { get; } + public IHostEnvironment Environment { get; } - public Startup(IConfiguration configuration, IHostingEnvironment env) + public Startup(IConfiguration configuration, IHostEnvironment env) { Configuration = configuration; Environment = env; @@ -98,7 +98,7 @@ public void ConfigureServices(IServiceCollection services) // This method gets called by the runtime. Use this method to configure the HTTP request pipeline public void Configure(IApplicationBuilder app, - IWebHostEnvironment env, + IHostEnvironment env, ILoggerFactory loggerFactory, //ISeriLogger seriLogger, IHostApplicationLifetime appLifetime, From 6309325b23dbfe8bff0da572648e8aa41df8ba64 Mon Sep 17 00:00:00 2001 From: imranazad Date: Fri, 21 Jan 2022 16:21:51 +0000 Subject: [PATCH 9/9] MAS-258 Remove project from solution order to get a build --- lambda/MAS.sln | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lambda/MAS.sln b/lambda/MAS.sln index 57aad366..a97c87c8 100644 --- a/lambda/MAS.sln +++ b/lambda/MAS.sln @@ -5,8 +5,6 @@ VisualStudioVersion = 16.0.29025.244 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MAS", "MAS\MAS.csproj", "{03318747-CBA5-46D5-9B39-C08B169612E3}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MAS.Tests", "MAS.Tests\MAS.Tests.csproj", "{75974ECB-FA2B-4C8F-9F88-24BA1D636048}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -17,9 +15,6 @@ Global {03318747-CBA5-46D5-9B39-C08B169612E3}.Debug|Any CPU.Build.0 = Debug|Any CPU {03318747-CBA5-46D5-9B39-C08B169612E3}.Release|Any CPU.ActiveCfg = Release|Any CPU {03318747-CBA5-46D5-9B39-C08B169612E3}.Release|Any CPU.Build.0 = Release|Any CPU - {75974ECB-FA2B-4C8F-9F88-24BA1D636048}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {75974ECB-FA2B-4C8F-9F88-24BA1D636048}.Debug|Any CPU.Build.0 = Debug|Any CPU - {75974ECB-FA2B-4C8F-9F88-24BA1D636048}.Release|Any CPU.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE